CN1 Beispiel: Der ZeroBrane Studio Debugger

Debuggen

Das Programm an dem ich die Funktionen des Debuggers erläutern möchte, ist das Programm aus dem voherigen Beispiel.

Nachdem das CN1 Board gestartet wurde stoppet das Programm an der ersten Programmzeile die Ausführbar ist (2):

Durch drücken von Step Over wird die nächste ausführbare Programmzeile (3) angesteuert:

Step Into hätte hier die gleiche Wirkung gehabt da die Library sys in c und nicht in Lua geschrieben ist. Diese lassen sich nicht debuggen.

Bei eine Library die Lua geschrieben ist sollte man ein Step Into nur dann versuchen wenn diese Datei auch im Project Verzeichnis zu finden ist. ZeroBrane Studio hat keine Möglichkeit auf Datei, die auf SD-Card gespeichert ist, zuzugreifen. Deshalb muss diese Datei lokal vorhanden und beide Dateien müssen exakt gleich sein!

Durch weiter Step Over kann man verfolgen wie das Programm durchlaufen wird. Anfangs ist das manchmal ein wenig überaschend. Es gibt aber einen guten Eindruck wie Lua funktioniert.

Wenn wir in Zeile 22 angekommen sind setzten wir zwei Breakpoints in Zeile 13 und 15.

Mit der Taste Start or continue debugging können wir das Program laufen lassen. Der Stop erfolgt in der Coroutine in der Zeile 13:

Jetzt kann man entwerde mit Step Over oder Start or continue debugging weitermachen.

Befehle

Start or continue debugging

Das Programm wird gestartet oder läuft weiter. Beim nächsten erreichten Breakpoint wird angehalten. Während das Programm läuft können Breakpoint gelöscht oder gesetzt werden.

Run as Scratchpad

Das Programm wird im Live Coding Modus gestartet. Das heißt bei jedem Tastendruck, wenn das Programm Syntaxtisch richtig ist, wird das Programm neu übertragen und neu gestartet. Programme müssen so angelegt werden das mehrfacher Start möglich ist. Wenn im Programm eine Resource belegt wird

gibt es beim nächsten Start die Fehlermeldung ‚Resource in use‘. Das kann so umgangen werden:

Das free gibt die Resource frei.

Stop the current running process

Beendet das laufende Programm, führt einen Reset der CN1 aus, läd das aktuelle File neu, startet diese und hält auf der ersten ausführbaren Zeile an.

Stop debugging and continue running process

Beendet den Debugger und läßt das Programm weiterlaufen. Bis zum Neustart der CN1 kann keine weiter Debug Aktion durchgeführt werden. Alle weitern Aktionen gelten nur dem ZeroBrane Studio!

Step int

In eine Funktion hineinspringen. Funktioniert nur für Lua Funktionen, sonst wie Step over. Befindet sich die Funktion in einem anderen File muss diese bereits im ZeroBrane Studio geladen sein und genau dem auf der SD-Card entsprechen!

Step over

Springt zur nächsten ausführbaren Programmzeile.

Step out of the current function

Läuft bis zum Ende der aktulellen Funktion, hält in der nächst höheren Eben an.

Run to cursor

Das Programm läuft bis zu der Zeile wo der Text-Cursor gerade steht. Die Zeile muss ausführbaren Programmcode erhalten. Ist sie nicht erreichbar läuft das Programm endlos weiter.

Hinweise

  • Wenn man das CN1 Board während des debuggens neu startet, bemerkt ZeroBrane Studios dieses nicht und wird die neuerliche debug Anfrage des Boards abweisen (siehe Output window, Fehlermeldung in rosa). Workaround: Stop the currently running process    drücken.
  • Der Button Execute the current project/file hat nicht mit dem remote Debugger zu tun. Er startet das file lokal, was zu Fehlermeldungen führt da die CN1 Biblotheken nicht vorhanden sind.
  • Das Verhalten der Buttons Stop the currently running process weicht bei der CN1 geringfügig ab. Ein reines Anhalten eines Programms auf der CN1 ist relativ nutzlos. Deshalb wird das Programm angehalten und ein Restart der CN1 ausgelöst (dauert etwa 5 Sekunden) welches das Programm auf der CN1 aktualisiert und an der ersten aktiven Zeile anhält. Wie gewünscht hält das Programm an, nur kann man nun die neue Version starten oder debuggen.
  • View the stack window und View the watch window funktionieren in der Version 3.0 noch nicht.

Nützliches

Es gibt einige nützliche Packages für ZeroBrane Studio bei github.com/pkulchenko/ZeroBranePackage. Wie man Packages installiert ist hier zu finden: studio.zerobrane.com/doc-plugin.html#plugin-installation.

Debugserver automatisch starten

Damit bei jedem Start von ZeroBrane Studio der Debugserver automatisch gestartet wird benutzt man autostartdebug.lua.

Hochladen von ein oder mehreren Files

Beim debuggen mit ZeroBrane Studio wird immer nur das File im aktiven Fenster in die CN1 geladen. Weiter Lua Files kann man direkt auf die SD-Card kopieren. Da mir das meist zu umständlich ist habe ich ein Plugin geschrieben welches einen Upload all Button in der Buttonleiste anzeigt. Damit werden alle Lua Files des Projektverzeichnisses auf die SD-Card kopiert.

Hinweis: Das Plugin ist noch in der Entwicklung. Momentan gibt es ab und zu Fehlermeldungen von COPAS.

Rating: 5.0. From 1 vote.
Please wait...