Dbug - another debugger for AutoIt 2016.06.24

   (0 reviews)

valdemar1977

7 Screenshots

About This File

Dbug is graphical debugger for AutoIt.

Project started by @Heron in 2009 and now supported by @asdf8 and @valdemar1977

Features

  • Debug the complete script or just parts of it
  • Display run status (line number of currently executed function)
  • GUI default always-on-top in the upper right corner for comfortable debugging
  • WM_NOTIFY and WM_COMMAND hook to prevent interference with possible message handlers
  • Display scope, type and value of variables, expressions, macro's and constants (global AND function local)
  • Execute commands in an immediate window. Can be expressions, functions and assignments
  • Detailed display of array, struct and object variables
  • Dynamic display of variable value in the source code (under cursor)
  • Array table viewer with ability to view the sub-arrays, the correct handling of macro @Error, @Extended and other changes
  • OEM and ANSI console output
  • Conditional breakpoints
  • Saving settings and debugging state
  • and much more...




User Feedback

You may only provide a review once you have downloaded the file.

There are no reviews to display.

  • Similar Content

    • c.haslam
      By c.haslam
      The cDebug script includes 3 debugging UDFs: _MsgDebug(), _ConsDebug() and _ClipDebug(). They all dump the values of scalars, vectors, constants and 2-D arrays, and report variables that are Objects and DLLStructs. As indicated by their names, they dump to a message box, to the SciTE console, and to the Clipboard respectively.
      The UDFs are also able to dump portions of vectors and rectangular portions of arrays.
      The format for calling the UDFs has been designed to make coding a call as convenient as possible, minimizing coding effort and the chances of errors: the $name argument is often the same as the variables arguments, enclosed in quote marks.
      #include-once #include <GuiConstants.au3> #include <GuiListView.au3> #include <StringConstants.au3> #include <WindowsConstants.au3> Opt("MustDeclareVars",1) ; Documentation: _cDebug.pdf ; Version 1.0.0 ; #FUNCTION# ==================================================================================================================== ; Name ..........: _ConsDebug ; Description ...: Dumps the value of variables and expressions to the Console ; Syntax ........: _ConsDebug($location, $names,$val1[[[[[[[[[[[[[[[[[, $val2 = Default], $val3 = Default], _ ; $val4 = Default], $val5 = Default], $val6 = Default], $val7 = Default], $val8 = Default], _ ; $val9 = Default], $val10 = Default], $val11 = Default], $val12 = Default] _ ; [, $val13 = Default], $val14 = Default], $val15 = Default], $val16 = Default], _ ; $val17 = Default], $val18 = Default], $val19 = Default]) ; Parameters ....: $location - a string: title ; If ^ is in the string, the dump is also sent to the Clipboard ; $names - comma-separted names to be shown in the dump, one per value ; If | is the first character, dumped strings start and end with ; Char(166), a broken bar ; '[controls][<title>:]name1,name2, ...' ; $val1 - a variant value. ; $val2 thru $val19 - [optional] a variant value. Default is not used ; Return values .: None ; Author ........: c.haslam at ieee dot org ; Modified ......: ; Remarks .......See _cDebug.pdf for details of functionality ; Related .......: _MsgDebug,_ClipDebug ; Link ..........: ; Example .......: _ConsDebug('Line '&@ScriptLineNumber','$bInt,$ar,StringInStr($str,":")',$bInt,$ar,StringInStr($str,':')) ; =============================================================================================================================== Func _ConsDebug($location,$names,$val1,$val2=Default,$val3=Default,$val4=Default,$val5=Default,$val6=Default,$val7=Default,$val8=Default _ ,$val9=Default,$val10=Default,$val11=Default,$val12=Default,$val13=Default,$val14=Default,$val15=Default,$val16=Default,$val17=Default, _ $val18=Default,$val19=Default) Local $bToClipboard = StringInStr($location,'^')<>'' If $bToClipboard Then $location = StringReplace($location,'^','') ; all EndIf Local $t = '***'&$location&'-------------------------'&@CRLF& _ _FormatValsForDebug($location,$names,$val1,$val2,$val3,$val4,$val5,$val6,$val7,$val8, _ $val9,$val10,$val11,$val12,$val13,$val14,$val15,$val16,$val17,$val18,$val19) ConsoleWrite($t) If $bToClipboard Then _UpdateClipboard($t) EndIf EndFunc ; #FUNCTION# ==================================================================================================================== ; Name ..........: _ClipDebug ; Description ...: Dumps the value of variables and expressions to the Clipboard ; Syntax ........: _ClipDebug($location, $names,$val1[[[[[[[[[[[[[[[[[, $val2 = Default], $val3 = Default], _ ; $val4 = Default], $val5 = Default], $val6 = Default], $val7 = Default], $val8 = Default], _ ; $val9 = Default], $val10 = Default], $val11 = Default], $val12 = Default] _ ; [, $val13 = Default], $val14 = Default], $val15 = Default], $val16 = Default], _ ; $val17 = Default], $val18 = Default], $val19 = Default]) ; Parameters ....: $location - a string: title ; If ^ is in the string, it is ignored ; $names - comma-separted names to be shown in the dump, one per value ; If | is the first character, dumped strings start and end with ; Char(166), a broken bar ; '[controls][<title>:]name1,name2, ...' ; $val1 - a variant value. ; $val2 thru $val19 - [optional] a variant value. Default is not used ; Return values .: None ; Author ........: c.haslam at ieee dot org ; Modified ......: ; Remarks .......: See _ConsDebug() ; Related .......: _MsgDebug,_ConsDebug ; Link ..........: ; Example .......: _ClipDebug('Line '&@ScriptLineNumber&','$bInt,$ar,StringLen($str)',$bInt,$ar,StringILen($str)) ; =============================================================================================================================== Func _ClipDebug($location,$names,$val1,$val2=Default,$val3=Default,$val4=Default,$val5=Default,$val6=Default,$val7=Default,$val8=Default _ ,$val9=Default,$val10=Default,$val11=Default,$val12=Default,$val13=Default,$val14=Default,$val15=Default,$val16=Default,$val17=Default, _ $val18=Default,$val19=Default) $location = StringReplace($location,'^','') ; all Local $t = '***'&$location&'-------------------------'&@CRLF& _ _FormatValsForDebug($location,$names,$val1,$val2,$val3,$val4,$val5,$val6,$val7,$val8, _ $val9,$val10,$val11,$val12,$val13,$val14,$val15,$val16,$val17,$val18,$val19) _UpdateClipboard($t) EndFunc ; #FUNCTION# ==================================================================================================================== ; Name ..........: _MsgDebug ; Description ...: Dumps the value of variables and expressions to the Console ; Syntax ........: _MsgDebug($location, $names,$val1[[[[[[[[[[[[[[[[[, $val2 = Default], $val3 = Default], _ ; $val4 = Default], $val5 = Default], $val6 = Default], $val7 = Default], $val8 = Default], _ ; $val9 = Default], $val10 = Default], $val11 = Default], $val12 = Default] _ ; [, $val13 = Default], $val14 = Default], $val15 = Default], $val16 = Default], _ ; $val17 = Default], $val18 = Default], $val19 = Default]) ; Parameters ....: $location - a string: title ; If ^ is in the string, the dump is also sent to the Clipboard ; $names - comma-separted names to be shown in the dump, one per value ; If | is the first character, dumped strings start and end with ; Char(166), a broken bar ; '[controls][<title>:]name1,name2, ...' ; $val1 - a variant value. ; $val2 thru $val19 - [optional] a variant value. Default is not used ; Return values .: None ; Author ........: c.haslam at ieee dot org ; Modified ......: See _ConsDebug() ; Remarks .......: See _ConsDebug() ; Related .......: _MsgDebug, _ClipDebug ; Link ..........: ; Example .......: _MsgDebug('Line '&@ScriptLineNumber&':'$bInt,$ar,StringLen($str)',$bInt,$ar,StringLen($str)) ; =============================================================================================================================== Func _MsgDebug($location,$names,$val1,$val2=Default,$val3=Default,$val4=Default,$val5=Default,$val6=Default,$val7=Default,$val8=Default _ ,$val9=Default,$val10=Default,$val11=Default,$val12=Default,$val13=Default,$val14=Default,$val15=Default,$val16=Default,$val17=Default, _ $val18=Default,$val19=Default) Local $bToClipboard = StringInStr($location,'^')<>'' If $bToClipboard Then $location = StringReplace($location,'^','') ; all EndIf Local $t = _FormatValsForDebug($location,$names,$val1,$val2,$val3,$val4,$val5,$val6,$val7,$val8, _ $val9,$val10,$val11,$val12,$val13,$val14,$val15,$val16,$val17,$val18,$val19) MsgBox($MB_SETFOREGROUND,$location,$t) If $bToClipboard Then _UpdateClipboard('***'&$location&'-------------------------'&@CRLF&$t) EndIf EndFunc Func _FormatValsForDebug($location,$names,$val1,$val2=Default,$val3=Default,$val4=Default,$val5=Default,$val6=Default,$val7=Default,$val8=Default _ ,$val9=Default,$val10=Default,$val11=Default,$val12=Default,$val13=Default,$val14=Default,$val15=Default,$val16=Default,$val17=Default, _ $val18=Default,$val19=Default) Local $idents = $location&':'&$names Local $stringDelim = '"' Local $indent = ' ' If StringLeft($names,1)='|' Then $stringDelim = Chr(166) ; broken bar $names = StringMid($names,2) $indent = '| ' EndIf Local $buf="",$ar,$i,$j,$k,$n,$p,$s Local $nParLvl=0,$bInBrs=False For $i = 1 to StringLen($names) Switch StringMid($names,$i,1) Case '(' $nParlvl += 1 Case ')' $nParLvl -= 1 Case '[' If $bInBrs Then MsgBox($MB_ICONERROR,'cDebug','Level of square bracketing is limited to one' _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf $bInBrs = True Case ']' If Not $bInBrs Then MsgBox($MB_ICONERROR,'cDebug','] encountered but there is no square bracked to close' _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf $bInBrs = False Case ',' If $nParLvl>0 Or $bInBrs Then $names = StringLeft($names,$i-1)&Chr(164)&StringMid($names,$i+1) EndIf EndSwitch Next If $nParLvl>0 Then MsgBox($MB_ICONERROR,'cDebug','Extra left parenthesis or missing right parenthesis' _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit ElseIf $nParlvl<0 Then MsgBox($MB_ICONERROR,'cDebug','Extra right parenthesis or missing left parenthesis' _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf If $bInBrs Then MsgBox($MB_ICONERROR,'cDebug','Extra left square bracket or missing right square bracket' _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf If StringLeft($names,1)=',' Then $names = StringMid($names,2) ; tolerate leading comma If $names="" Then MsgBox($MB_ICONERROR,'cDebug','Variable names are missing' _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf Local $namesVec = StringSplit($names, ",") ; 1-based For $i = 1 to $namesVec[0] $namesVec[$i] = StringReplace($namesVec[$i],Chr(164),',') Next Local $valsVec[@NumParams+2] Local $t,$s $i = 1 While True $valsVec[$i] = Eval('val'&$i) If $valsVec[$i]=Default Then ExitLoop $i += 1 If $i>@NumParams Then ExitLoop WEnd ReDim $valsVec[$i] ; ref 1 If UBound($valsVec)<>UBound($namesVec) Then $s = StringReplace($names,Chr(164),',') If UBound($valsVec)>UBound($namesVec) Then $t = 'There are more value arguments than identifiers, so values of some identifiers will not be reported' $t &= @CRLF&@CRLF&'Identifiers: '&$s MsgBox($MB_ICONWARNING,'cDebug()',$t) ElseIf UBound($valsVec)<UBound($namesVec) Then $t = 'There are more identifiers than value arguments' $t &= @CRLF&@CRLF&'Identifiers: '&$s MsgBox($MB_ICONERROR,'cDebug()',$t) Exit EndIf EndIf For $i = 1 To $namesVec[0] $ar = $valsVec[$i] If IsArray($ar) Then Switch UBound($ar,0) Case 2 Local $brsVec = StringSplit($namesVec[$i],'[]',0+2) ; char,0-based Local $qRows = UBound($ar, 1) Local $qCols = UBound($ar, 2) If UBound($brsVec)=1 Then ; if no [] Local $wid = StringLen('['&($qRows-1)&']['&($qCols-1)&']') ; 2015-06-11 $buf &= $namesVec[$i]&' Array: Ubounds '&$qRows&','&$qCols&@CRLF For $j = 0 To $qRows-1 For $k = 0 To $qCols-1 If IsArray( $ar[$j][$k]) Then $buf &= "["&$j&"]["&$k&"]"&@CRLF&_FormatValsForDebug($location,$indent,$ar[$j][$k]) Else $n = $ar[$j][$k] If IsString($n) Then $n = $stringDelim&$n&$stringDelim $buf &= $namesVec[$i] & StringFormat('%-'&$wid&'s', "["&$j&"]["&$k&"]")&" "&$n & @CRLF EndIf Next Next Else If UBound($ar,1)=0 Or UBound($ar,2)=0 Then $buf &= $brsVec[0]&' Array: Ubounds '&UBound($ar,1)&','&UBound($ar,2)&@CRLF ContinueLoop EndIf Local $qRows = UBound($ar,1)-1 Local $qCols = UBound($ar,2)-1 Local $rowIxsVec[0],$evaledRowIxsVec[0] _DoIndicesDebug($idents,$brsVec[1],$qRows,'row',$namesVec[$i],$namesVec,$valsVec, $rowIxsVec, _ $evaledRowIxsVec) Local $colIxsVec[0],$evaledcolIxsVec[0] _DoIndicesDebug($idents,$brsVec[3],$qCols,'column',$namesVec[$i],$namesVec,$valsVec, $colIxsVec, _ $evaledcolIxsVec) $buf &= $namesVec[$i]&' Array: Ubounds '&($qRows+1)&','&($qCols+1)&@CRLF Local $rowWid,$colWid If $brsVec[1]='..' Then $rowWid = StringLen($qRows) Else $rowWid = 0 For $j = 0 To UBound($rowIxsVec)-1 $n = StringLen($rowIxsVec[$j]) If $n>$rowWid Then $rowWid = $n $n = StringLen($evaledrowIxsVec[$j]) If $n>$rowWid Then $rowWid = $n Next EndIf If $brsVec[3]='..' Then $colWid = StringLen($qcols) Else $colWid = 0 For $j = 0 To UBound($colIxsVec)-1 $n = StringLen($colIxsVec[$j]) If $n>$colWid Then $colWid = $n $n = StringLen($evaledcolIxsVec[$j]) If $n>$colWid Then $colWid = $n Next EndIf Local $wid = $rowWid+$colWid+StringLen('[][]') Local $nRow,$sRow,$nCol,$sCol For $j = 0 To UBound($evaledRowIxsVec)-1 $nRow = $evaledRowIxsVec[$j] $sRow = $rowIxsVec[$j] For $k = 0 To UBound($evaledcolIxsVec)-1 $nCol = $evaledColIxsVec[$k] $sCol = $colIxsVec[$k] If IsArray($ar[$nRow][$nCol]) Then $buf &= "["&$sRow&"]["&$sCol&"]"&@CRLF& _ _FormatValsForDebug($location,$indent,$ar[$nRow][$nCol]) Else $n = $ar[$nRow][$nCol] If IsString($n) Then $n = $stringDelim&$n&$stringDelim $buf &= $brsVec[0] & _ StringFormat('%-'&$wid&'s', "["&$sRow&"]["&$sCol&"]")&" "&$n & @CRLF EndIf Next Next EndIf Case 1 If UBound($ar)=0 Then $buf &= $namesVec[$i]&' Ubound 0'&@CRLF ContinueLoop EndIf Local $brsVec = StringSplit($namesVec[$i],'[]',0+2) ; char,0-based Local $qEls = UBound($ar) Local $ixsVec[0],$evaledixsVec[0] If UBound($brsVec)=1 Then ; no [] Local $wid = StringLen('['&($qEls-1)&']') $buf &= $namesVec[$i]&' Vector: Ubound '&$qEls&@CRLF For $j = 0 To $qEls-1 If IsArray( $ar[$j]) Then $buf &= "["&$j&"]"&@CRLF&_FormatValsForDebug($location,$indent,$ar[$j])&@CRLF Else $n = $ar[$j] If IsString($n) Then $n = $stringDelim&$n&$stringDelim $buf &= $namesVec[$i] & StringFormat('%-'&$wid&'s', "["&$j&"]")&" "&$n & @CRLF EndIf Next Else _DoIndicesDebug($idents,$brsVec[1],$qEls,'element',$namesVec[$i],$namesVec,$valsVec, $ixsVec, _ $evaledIxsVec) EndIf Local $wid = 0 For $j = 0 To UBound($ixsVec)-1 $n = StringLen($ixsVec[$j]) If $n>$wid Then $wid = $n $n = StringLen($evaledIxsVec[$j]) If $n>$wid Then $wid = $n Next $wid += StringLen('[]') For $j In $ixsVec If IsArray($ar[$j]) Then $buf &= $namesVec[$i]&"["&$j&"]"&_FormatValsForDebug($location,$indent,$ar[$j]) Else If IsString($ar[$j]) Then $ar[$j] = $stringDelim&$ar[$j]&$stringDelim $buf &= $brsVec[0] & StringFormat('%-'&$wid&'s', "["&$j&"]")&" " & $ar[$j] & @CRLF EndIf Next EndSwitch ElseIf IsObj($valsVec[$i]) Then $buf &= $namesVec[$i] & ' <Object>' & @CRLF ElseIf IsDllStruct($valsVec[$i]) Then $buf &= $namesVec[$i] & ' <DLLStruct>' & @CRLF Else $s = $valsVec[$i] If IsString($s) Then $buf &= $namesVec[$i] & ' '&$stringDelim & $s & $stringDelim&@CRLF Else $buf &= $namesVec[$i] & " " & $s & @CRLF EndIf EndIf Next Return $buf EndFunc Func _DoIndicesDebug($idents,$expr,$qRorC,$rOrC,$arName,$namesVec,$valsVec, ByRef $allIxsVec, ByRef $evaledAllIxsVec) Local $ixsVec[0],$evaledixsVec[0] If $expr='' Then $expr = '..' EndIf Local $vec = StringSplit($expr,',',0+2) ; char,0-based For $i = 0 To UBound($vec)-1 Local $subExpr = $vec[$i] If $subExpr='..' Then _DoRangeAllDebug($qRorC, $ixsVec, $evaledIxsVec) ElseIf StringRegExp($subExpr,'^(\$[a-zA-Z0-9_]+|\d+)\.\.$') Then _DoNumRangeFromDebug($idents,$subExpr,$qRorC,$rOrC,$arName,$namesVec,$valsVec, $ixsVec, $evaledIxsVec) ElseIf StringRegExp($subExpr,'^\.\.(\$[a-zA-Z0-9_]+|\d+)$') Then _DoNumRangeToDebug($idents,$subExpr,$qRorC,$rOrC,$arName,$namesVec,$valsVec, $ixsVec, $evaledIxsVec) ElseIf StringRegExp($subExpr,'^(\$[a-zA-Z0-9_]+|\d+)\.\.(\$[a-zA-Z0-9_]+|\d+)$') Then _DoNumRangeFromToDebug($idents,$subExpr,$qRorC,$rOrC,$arName,$namesVec,$valsVec, $ixsVec, $evaledIxsVec) ; List of mixed AutoIt variables and positive integers ElseIf StringRegExp($subExpr,'^(\$[a-zA-Z0-9_])+|\d+(,\$[a-zA-Z0-9_]+|\d+)*$') Then _DoVarOrNumListDebug($idents,$subExpr,$qRorC,$rOrC,$arName,$namesVec,$valsVec, $ixsVec, $evaledIxsVec) Else MsgBox($MB_ICONERROR,'cDebug()','Invalid '&$rOrC&' expression '&$subExpr&' in '&$arName _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf ; append Local $ubOld = UBound($allIxsVec) Local $ubNew = $ubOld + UBound($ixsVec) ReDim $allIxsVec[$ubNew] For $j = $ubOld To $ubNew-1 $allIxsVec[$j] = $ixsVec[$j-$ubOld] Next ReDim $evaledAllIxsVec[$ubNew] For $j = $ubOld To $ubNew-1 $evaledAllIxsVec[$j] = $evaledixsVec[$j-$ubold] Next Next EndFunc Func _DoRangeAllDebug($qRorC, ByRef $ixsVec, ByRef $evaledIxsVec) ReDim $ixsVec[$qRorC+1] For $j = 0 To $qRorC $ixsVec[$j] = $j Next $evaledixsVec = $ixsVec EndFunc Func _DoNumRangeFromDebug($idents,$expr,$qRorC,$rOrC,$arName,$namesVec,$valsVec, ByRef $strsVec, ByRef $nbrsVec) Local $t Local $vec = StringSplit($expr,'..',1+2) ; str,0-based Local $nst If StringLeft($vec[0],1)='$' Then $nSt = _GetEvaledIxDebug($idents,$namesVec,$vec[0],$valsVec,$arName) Else $nst = $vec[0] EndIf If $nst<=$qRorC Then ReDim $nbrsVec[$qRorC+1-$nst] For $j = 0 To $qRorC-$nSt $nbrsVec[$j] = $j+$nst Next $strsVec = $nbrsVec If $nst<>$vec[0] Then $strsVec[0] = $vec[0] EndIf Else $t = $nst<>$vec[0] ? ' ('&$nst&')' : '' MsgBox($MB_ICONERROR,'cDebug()', _ $vec[0]&$t&' exceeds the maximum '&$rOrC&' number in '&$arName&', which is '&$qRorC _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf EndFunc Func _DoNumRangeToDebug($idents,$expr,$qRorC,$rOrC,$arName,$namesVec,$valsVec, ByRef $strsVec, ByRef $nbrsVec) Local $t Local $vec = StringSplit($expr,'..',1+2) ; str,0-based Local $nEnd If StringLeft($vec[0],1)='$' Then $nEnd = _GetEvaledIxDebug($idents,$namesVec,$vec[1],$valsVec,$arName) Else $nEnd = $vec[1] EndIf If $nEnd<=$qRorC Then ReDim $nbrsVec[$nEnd+1] For $j = 0 To $nEnd $nbrsVec[$j] = $j Next $strsVec = $nbrsVec If $nEnd<>$vec[0] Then $strsVec[$qRorC] = $vec[0] EndIf Else $t = $nEnd<>$vec[0] ? ' ('&$nEnd&')' : '' MsgBox($MB_ICONERROR,'cDebug()', _ $vec[0]&$t&' exceeds the maximum '&$rOrC&' number in '&$arName&', which is '&$qRorC _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf EndFunc Func _DoNumRangeFromToDebug($idents,$expr,$qRorC,$rOrC,$arName,$namesVec,$valsVec, ByRef $strsVec, ByRef $nbrsVec) Local $t,$s Local $svec = StringSplit($expr,'..',1+2) ; str,0-based Local $nvec[2] For $i = 0 To 1 $nVec[$i] = _GetEvaledIxDebug($idents,$namesVec,$sVec[$i],$valsVec,$arName) Next If $nVec[0]<=$qRorC And $nVec[1]<=$qRorC And $nVec[1]>=$nVec[0] Then ReDim $nbrsVec[$nVec[1]-$nVec[0]+1] For $j = $nVec[0] To $nVec[1] $nbrsVec[$j-$nvec[0]] = $j Next $strsVec = $nbrsVec If StringLeft($sVec[0],1)='$' Then $strsVec[0] = $svec[0] EndIf If StringLeft($svec[1],1)='$' Then $strsVec[UBound($strsVec)-1] = $svec[1] EndIf Else For $i = 0 To 1 If $nVec>$qRorC Then $t = $svec[$i]<>$nvec[$i] ? ' ('&$nVec[$i]&')' : '' MsgBox($MB_ICONERROR,'cDebug()', _ $sVec[$i]&$t&' exceeds the maximum row number in '&$arName&', which is '&$qRorC _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf Next If $nvec[1]<$nvec[0] Then $t = $svec[1]<>$nvec[1] ? ' ('&$nVec[1]&')' : '' $s = $svec[0]<>$nvec[0] ? ' ('&$nVec[0]&')' : '' MsgBox($MB_ICONERROR,'cDebug()',$sVec[1]&$t&' is less than '&$sVec[0]&$s&'in '&$arName _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf EndIf EndFunc Func _DoVarOrNumListDebug($idents,$expr,$qRorC,$rOrC,$arName,$namesVec,$valsVec, ByRef $strsVec, ByRef $nbrsVec) Local $t $strsVec = StringSplit($expr,',',0+2) ReDim $nbrsVec[UBound($strsVec)] For $i = 0 To UBound($strsVec)-1 $nbrsVec[$i] = _GetEvaledIxDebug($idents,$namesVec,$strsVec[$i],$valsVec,$arName) If $nbrsVec[$i]>$qRorC Then $t = $strsVec[$i]<>$nbrsVec[$i] ? ' ('&$nbrsVec[$i]&')' : '' MsgBox($MB_ICONERROR,'cDebug()', _ $strsVec[$i]&$t&' exceeds the maximum '&$rOrC&' number in '&$arName&', which is '&$qRorC _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf Next EndFunc Func _GetEvaledIxDebug($idents,$namesVec,$strIx,$valsVec,$arName) Local $ret,$t,$n If StringRegExp($strIx,'^\d+$',0) Then ; >=1 digits $ret = $strIx ElseIf StringRegExp($strIx,'^\$[A-Za-z0-9_]+$') Then ; an AutoIt variable name $t = _EvaluateDebug($strIx) If @error Then ; a local variable $n=-1 For $j = 1 To UBound($namesVec)-1 If $namesVec[$j]=$strIx Then $n = $j ExitLoop EndIf Next If $n>=0 Then $ret = $valsVec[$n] Else MsgBox($MB_ICONERROR,'cDebug()',$strIx&' occuring in '&$arName&' is not defined' _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf ElseIf Not StringRegExp($t,'^\d+$') Then MsgBox($MB_ICONERROR,'cDebug()', _ $strIx&' in '&$arName&' neither is, nor evaluates to, zero or a positive integer' _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit Else $ret = $t EndIf Else MsgBox($MB_ICONERROR,'cDebug()',$strIx&' in '&$arName&' is illegal' _ &@CRLF&@CRLF&'Identifiers: '&$idents) Exit EndIf Return $ret EndFunc Func _EvaluateDebug($__paramDebug) If StringLeft($__paramDebug,1)='$' Then $__paramDebug = StringTrimLeft($__paramDebug,1) EndIf $__paramDebug = Eval($__paramDebug) Return SetError(@error,0,$__paramDebug) EndFunc Func _UpdateClipboard($t) Static Local $bInited If (Not $bInited) And ClipGet()<>'' Then Local $ans = MsgBox(35+$MB_SETFOREGROUND,"cDebug","Clear the Clipboard initially?") ; yes,no,cancel Switch $ans Case 6 ;Yes ClipPut('') Case 7 ;No ; do nothing Case 2 ;Cancel Exit EndSwitch $bInited = True EndIf ClipPut(ClipGet()&$t) EndFunc The documentation is attached.
      These UDFs have been in regular use for some years.
       
      cDebug.pdf
    • careca
      By careca
      Hi, having an issue with an application i did, seems to crash randomly, and can take hours to do so.
      Simply says in the error msgbox:
      AutoIt Error
      Line 16392 (whatevermyapppath.exe)
      Error: The requested action with this object has failed.
       
      Recent changes to the script include this:
       
      ObjGet("winmgmts:\\localhost\root\CIMV2") $oSelect_active_network_cards = $objWMIService.ExecQuery('SELECT ProductName FROM Win32_NetworkAdapter WHERE NetConnectionStatus = 2 OR NetConnectionStatus = 9', "WQL") For $oSelect_active_network_card In $oSelect_active_network_cards $Adapter = $oSelect_active_network_card.ProductName Next Is the only thing i can see that can be related to an "object"
      This lines run only once at the top of the script.
      When i run the script itself and wait for a crash, it doesn't, or at least yet i didn't.
      What do you think this error could be?
      UPDATE: Runing the script eventually output this:
      "C:\script.au3" (894) : ==> The requested action with this object has failed.:
      $oNetwork_cards = $objWMIService.ExecQuery('SELECT BytesReceivedPerSec, BytesSentPerSec FROM Win32_PerfFormattedData_Tcpip_NetworkInterface WHERE name LIKE "' & $Adapter & '"', "WQL")
      $oNetwork_cards = $objWMIService^ ERROR
    • aiter
      By aiter
      Anyone knows how to download the graphical autoitdebugger
      The download appears to have upped and died.
      Or an alternative?
       
       
    • Darien
      By Darien
      When an error occurs in a compiled script, the line number where the error occurred does not match. I noticed that blank lines and lines with only comments are ignored. in the attached example, it is advised that the error occurred on line 2, although in line 4. How to make it warned the correct line?
      teste.au3
    • Mbee
      By Mbee
      I've never seen this error before using the AutoIt graphical debugger, but nothing I've tried everything I can think of.
      I've tried asking at FoolOnTheHill, the English language forum for this debugger, but apparently it's been dead for years.  And although it's possible the author's German language support forum is still running, I can't read or write German, and I can't find anywhere else to get support.
      What's happening is that I first set a breakpoint early on, and then when I press "Run", I'm now always getting the following error:
      Line 600 (File "C:\MyScripts\MyScript\Debug\MyScript.DebugScipt.au3"); #include "C:\MyScripts\MyScript\Debug\MyScript.DebugScipt.au3" Error: Error opening the file. Now, I've checked carefully, and everything in the Debug folder looks fine!  Nothing's set to read-only, nothing's hidden, and I can open all the files there just fine as well.
      I thought maybe my damn antivirus was getting in my way again, but I disabled it and the problem remains.  I've also tried deleting the Debug folder and letting the debugger create it from scratch, but that doesn't solve it either.
      I'm desperate for help, please!?
      Thanks!