Wie erstellt man einen einfach Debug Output in ein Textfile

  • Hallo zusammen,

    ich finde es etwas zeitaufwändig und nervig, zum debuggen sich mit Messageboxen die Variablen anzeigen zu lassen, zumal diese "nicht druckbare Zeichen" nicht anzeigen.

    Es gibt im Include Verzeichnis eine Debug.au3. Was kann die, bzw. wie wende ich die an ?

    Folgende Idee würde mir vorschweben, vielleicht hat von Euch jemand ja sowas schon entwickelt oder angefangen:

    Man bindet eine "mydebug.au3" via include ein, welche folgende Funktion hat:

    Immer wenn eine Variable in einer Codezeile erscheint, wird in ein vorher definiertes Textfile die Zeilennummer, der Name der Variablen und der Wert der Variablen rausgepipt.

    Wenn man das dann z.B. mit notepad++ anschaut, sieht man auch die "nicht druckbare Zeichen"

    Hört sich vermutlich einfach an, wird es aber wahrscheinlich nicht sein :wacko:

    Freue mich schon auf Eurer Feedback

    Gruss Holger

    Einmal editiert, zuletzt von HassanMullah (9. November 2010 um 08:43)

  • Hallo Ihr Beiden,

    ich habe mir das mal angeschaut.

    Xenobiologist : Soweit ich das richtig interpretiere, muss ich für jede Zeile einzeln, die ich wissen will, mit den Befehlen umgehen, oder ? Das wäre dann nicht die Lösung, die ich suche.

    @Milla: Die "Technik" kommt dem was ich suche sehr nahe, das Ergebnis leider jedoch nicht.
    Also so einen "einfachen" Knopf drücken und dann ALLES debuggen was kommt, ist das was ich suche.

    Ich habe mal kurz folgendes Script zusammen geklopft:

    [autoit]

    Dim $var1, $var2, $var3, $var4
    $var1 = "2"
    $var2 = "4"
    For $i = 0 To 5 Step 1
    $var3 = $i * $var1 + $var2
    $var4 = $var3 * $i
    MsgBox(0, "Info", "var3 = " & $var3 & @CRLF & "var4 = " & $var4, 1)
    Next
    MsgBox(0, "Info", "Fertig", 5)

    [/autoit]

    An den Messagboxen werden pro Durchlauf unterschiedliche Werte angezeigt.

    Wenn ich jetzt via Tools => Trace: Add Trace Lines aktiviere, sieht der Output so aus:

    Spoiler anzeigen

    Ich sehe zwar den Namen der Variablen, aber nicht den Wert.

    Ich möchte jedoch gerne auf einfache Art und Weise die Veränderung der Werte protokollieren.

    Gruss Hassan

  • Da wird es dann das Problem geben, wie du an den Variablennamen kommst. Du kannst ja schwer die Variablennamen per Parameter übergeben.

    • Offizieller Beitrag

    Ich sehe zwar den Namen der Variablen, aber nicht den Wert.

    Ich möchte jedoch gerne auf einfache Art und Weise die Veränderung der Werte protokollieren.


    Ich weiß, was du willst:
    Ein Fenster, in das du die zu überprüfenden Variablen einträgst und dann eine ständige Ausgabe der (sich ändernden) Werte für diese Variablen.
    Im EN-Forum hat sich mal jemand an 'nem Debugger versucht. Habe das Tool getestet aber wieder verworfen. Arbeitet nicht zuverlässig.
    Mir persönlich reicht "ConsoleWrite($variable)" völlig. Sehe keine Notwendigkeit für ein extra Tool. Und wenn du es speichern möchtest, verwende (wie schon erwähnt) _FileWriteLog.
    Übrigens brauchst du ja das "ConsoleWrite($variable)" nicht mal selbst zu schreiben. ;) Einfach den Cursor auf die Variable setzen und "Alt+D" drücken. Dann wird unter der aktuellen Zeile eingefügt:

    [autoit]

    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Variable = ' & $Variable & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]

    Nur bei Arrays mußt du "[n]" ergänzen.

  • Guten Morgen BugFix,

    sorry das ich mich erst heute melde, hatte ein paar Andere Dinge um die Ohren.

    Das mit dem Alt+D (also ConsoleWrite) finde ich eigentlich ganz gut und OK. Die Variante _FileWriteLog habe ich jetzt noch nicht angeschaut, aber ich behalten Sie mir mal im Hinterkopf.


    vielen Dank nochmals


    Gruss Hassan