AutoIt Live-Debugger und wie man ihn benutzt

  • Tach!

    Eine Programmiersprache sollte einen Debugger haben. Jetzt bekommt AutoIt auch einen, einen "echten".

    Davor


    Das Skript wurde ursprünglich von Heron geschrieben. Ich habe es etwas handlicher gemacht und unnötige Funktionen / Ressourcen entfernt und hier und da etwas aufgeräumt. In diesem Tutorial geht es aber weniger um das Skript, als um die effektive Nutzung desselben.

    1. Was


    Der Debugger ist ein Einzelschritt Debugger, der mit SciTe kommuniziert. Es werden beim Ausführen des Skripts automatisch Breakpoints eingefügt. An diesen Stellen bleibt der Debugger nach einem Schritt stehen. Man hat die Möglichkeit per Einzelschritt [1] vorzugehen, das Skript bis zur Cursorposition in SciTe auszuführen [2] oder das Skript einfach laufen zu lassen [3]. Das ausgeführte Skript kann jederzeit pausiert werden [4]. In einem Listview werden alle Variablen und Makros mit Typ, Wert und Scope angezeigt [5]. Der Debugger hat zudem eine eigene Kommandozeile [6], um Befehle am aktuellen Breakpoint auszuführen. Dazu gibt es zur Eingabe ein Input, zur Ausgabe eine Console [7]. Der allgemeine Status des Debuggers kann über die restlichen Labels [8] abgelesen werden (wie Ausführungszeit, Änderungen, Errors, Calls während des Ausführens).

    Die aktuelle Position wird in SciTe immer mit einem Punkt in der linken Leiste markiert. Über "Exit all" beenden wir das Skript + den Debugger. Beendet sich das Skript, schließt sich auch der Debugger automatisch.

    2. Wie

    Gehen wir mal durch wie man ihn benutzen könnte.

    Um das Skript zu debuggen, welches wir vor uns haben, müssen wir einfach nur #include <Debugger.au3> an den Anfang setzen. Das entfernen wir vor dem Kompilieren einfach wieder. Wenn man jetzt das Skript startet, dann öffnet sich das Debuggerfenster und das Skript ist pausiert. Wir können nun einfach per Druck auf "Step" das Skript bis zur nächsten Zeile ausführen.

    Man sieht nun, dass die Variablen die vorhanden sind in einem Listview angezeigt werden, und wir nach einem Step sehen wie sie sich ändern. Drücken wir jetzt auf Run, dann deaktivieren wir das Debuggen für eine unbestimmte Zeit oder bis wieder ein Druck auf "Stop" erfolgt. In dieser Zeit werden die Variablenwerte nicht aktualisiert, um die Performance des Skripts nicht zu beeinflussen. Nach dem Stoppen werden die Werte wieder angezeigt.

    Wenn wir den Debugger für einen Codeabschnitt komplett ausschalten wollen, setzen wir an den Anfang des Abschnitts einfach "#Debugger_Stop" und danach ein "#Debugger_Start". Der Debugger überspringt diese Zeilen ganz.

    Probiert einfach ein wenig herum, es sollte selbsterklärend sein ^^

    3. Integrierte Kommandozeile

    Dieses Feature hat zwei Hauptfunktionen. Zum Einen können damit am Breakpoint AutoIt-Befehle ausgeführt werden (die natürlich auch das Skript affektieren können) und zum Anderen können damit die Werte der Variablen live geändert werden (Bsp: "$var = 4"), beim nächsten Breakpoint sind die Änderungen dann durchgeführt.

    Aber die Konsole hat noch eine Funktion. Gibt man nur eine Variable ein "$Var", werden alle Infos zu dieser Variable ausgegeben. Auch zu Arrays, dort wird jedes Element aufgerollt!

    Danach

    Dieser Debugger funktioniert nur mit der aktuellen Stable. Mit den Betas kommt er nicht klar. Da es aber in absehbarer Zeit keine neu Stable geben wird, ist das kein Problem. Wenn etwas unklar war / ist unbedingt fragen!

    Installation: Die angehängte Datei in den Autoit-Inlcude-Ordner packen. ERST alles oben lesen!

  • Der Heise funktioniert bei mir nicht. Es gibt keine "meine" Version. Ich habe bloß überflüssiges entfernt und ein paar Infoausgaben hinzugefügt. So bleibt nur noch eine Datei und nicht mehrere.

  • Hallo Community und speziell an minx,

    da ich den AutoIt Live-Debugger gern nutzen möchte und mir der andere Debugger über heise (verfügbar) nicht gefällt bzw. ich diesen in früheren Versionen von AutoIt bereits als sehr umständlich für mich eingestuft habe (empfand), will ich die durch minx überarbeitete Version "debugger.au3" nutzen.

    Problem:

    Spoiler anzeigen


    Anscheinend funktioniert dieser in Version 3.3.10.2 nicht (mehr) bzw. noch nicht! Gibt es diesbezüglich bereits Erfahrungen oder Bugfixes oder einen anderen Ansatz? Vielleicht sogar ein weiterer Debugger, der diesen ablöst?


    Über Tipps oder überhaupt aktuelle Infos dazu bin ich sehr dankbar.

    Vielen Dank für etwaige Unterstützung (Ideen, Verbesserungsvorschläge, Kritik und Zustimmung).
    Einen angenehmen Tag noch!

    UserIsGrateful 【ツ】

  • Hallo minx,

    mit so einer schnellen Reaktion hatte ich nicht gerechnet, danke. Ich kann den Debugger an sich gar nicht nutzen. Also mit verschiedenen Varianten, wird mein Skript (egal welches Skript), einfach gestartet und wieder beendet.

    Vorgehensweise:

    Spoiler anzeigen


    Die "Debugger.au3" habe ich das include-Verzeichnis (AutoIts) geschoben und diese im Skript normal wie die default includes aufgerufen. Ergebnis = nix passiert. Dann gab es noch den Test direkt im Skriptverzeichnis und der Aufruf, sowie die Tests mit relativen und absoluten Pfad für die "Debugger.au3", Ergebnis = nix passiert.

    Was ich allerdings noch nicht getestet habe, ob, wenn ich in der "Debugger.au3" mal oben eine MsgBox einfüge, ob diese ausgeführt wird und somit der Aufruf des includes stimmt oder nicht. Aber generell kannst du mir wahrscheinlich nicht sagen, ob es in Version 3.3.10.2 geht oder nicht. Nutzt du eine ältere Version?


    Ich hoffe es ist soweit alles verständlich und bedanke mich für weitere Infos. Ein angenehmes WE wünsche ich dir und bis später, falls ich in den nächsten Std. nicht gleich antworten sollte.

    Vielen Dank für etwaige Unterstützung (Ideen, Verbesserungsvorschläge, Kritik und Zustimmung).
    Einen angenehmen Tag noch!

    Edit:

    Spoiler anzeigen


    2014-08-02 In Version 3.3.8.1 funktioniert der Aufruf und das debugging reibungslos.


    UserIsGrateful 【ツ】

    2 Mal editiert, zuletzt von Sven-Seyfert (2. August 2014 um 11:23)