Programmierkurs: Delphi: Der Debugger

Aus Wikibooks

Der Debugger[Bearbeiten]

Der Debugger (von engl. bug: Wanze; wörtlich: Entwanzer) ist ein nützliches Tool, das einem die Arbeit erleichtert, einen Fehler zu finden. Es gibt für fast jede Programmiersprache einen Debugger, wir sind hier nicht auf die RAD-Umgebung angewiesen! Für den C-Compiler GCC gibt es beispielsweise einen dazugehörigen Debugger. Jedoch wird er per Kommandozeile bedient und ist nicht nur deshalb nicht so bequem wie der Delphi-Debugger.

Die Aufgabe des Debuggers[Bearbeiten]

Der Debugger hat - wie schon oben erwähnt - die Aufgabe, einem Programmierer beim Finden eines Fehlers zu helfen. Man kann damit beispielsweise prüfen, ob man eine Bedingung richtig formuliert hat oder welchen Wert eine Variable im laufenden Programm hat. Diese Sachen sind das Einzige, was der Debugger bietet. Auch wenn es nach wenig klingt: Allein das kann oftmals sehr nützlich sein!

Setzen eines Haltepunkts[Bearbeiten]

Gesetzter Haltepunkt

Ein Haltepunkt - englisch Breakpoint - ist eine Zeile im Code, die überprüft wird. Genauer: Das Programm wird an dieser Stelle angehalten. Man erhält Informationen über alle Variablen und ihre Werte, die sie an dieser Stelle des Programms haben.

Um einen Haltepunkt zu setzen, muss man mit der linken Maustaste auf den Rand neben der gewünschten Codezeile klicken. Auf dieselbe Weise lässt er sich wieder entfernen.

Danach wird das Programm mit F9 kompiliert und ausgeführt. Beim Kompilieren wird auf den roten Punkt ein Haken gesetzt. Damit zeigt der Compiler an, dass dieser Haltepunkt korrekt ist und im Programmablauf auch erreicht werden kann. Wenn das Programm diese Stelle dann erreicht, wird es vor der Ausführung dieser Zeile angehalten und es wird das Editorfenster wieder angezeigt. Ein blauer Pfeil in der linken Spalte zeigt die Position der Zeile an, die als nächstes ausgeführt werden soll. Sollte Ihr Haltepunkt durchgekreuzt sein, kann das Programm an dieser Stelle nicht angehalten werden oder diese Stelle wird niemals erreicht.

Tipp:

Wenn Sie das Programm kompilieren lassen, zeigt der Editor von Delphi vor allen Zeilen einen blauen Punkt an, die im Programmablauf angesprungen werden können. Auf jede dieser Zeilen können Sie einen Haltepunkt setzen. In Lazarus funktioniert dies nicht.


Werte anzeigen und ändern[Bearbeiten]

Wenn Sie nun den Mauszeiger über eine Variable oder über die Eigenschaft eines Objekts (z. B. auch Edit1.Text) bewegen, bekommen Sie als Hint den Wert der Variablen mitgeteilt. Somit können Sie auch feststellen, ob diese die von Ihnen vorgesehenen Werte besitzen. Bei einer Klasse können Sie sogar durch sämtliche Felder und Eigenschaften navigieren.

Da das bei mehreren Variablen sehr mühselig werden kann, bietet Delphi im Debug-Modus zwei Auswertungsfenster: eines für lokale Variablen der aktuellen Methode inklusive Result und bei Klassen auch Self, eines für selbst angelegte Überwachungen.

Bei einigen Variablen können Sie während des Debuggens auch den Wert ändern. Dies funktioniert bei den einfachen Datentypen (Gleitkomma- oder Ganzzahlen, Char, Boolean), bei Arrays unterstützter Datentypen, sowie Record- und Klassen-Feldern der unterstützen Datentypen. Nicht erlaubt sind Änderungen von Zeigern, dazu zählen also auch Strings. Um eine Änderung vorzunehmen, doppelklicken Sie in der Liste der lokalen Variablen auf den gewünschten Namen. In der "Liste überwachter Ausdrücke" klicken Sie mit der rechten Maustaste auf die Variable und wählen Untersuchen. Alternativ können Sie in beiden Fällen die Variable anklicken und dann die Tastenkombination Strg+I verwenden. Im sich dann öffnenden Fenster klicken Sie auf den Button mit den drei Punkten und können nun den Wert ändern.

Hinweis: Das Ändern von Werten wird derzeit nicht in Lazarus unterstützt. Die Listen überwachter Ausdrücke und lokaler Variablen können dort über das Menü angezeigt werden. Der Wert als Hint beim Draufzeigen mit der Maus wird ebenfalls angezeigt.

Programme schrittweise ausführen[Bearbeiten]

Wenn Sie nun den Programmablauf studieren wollen, um zum Beispiel festzustellen, an welcher Stelle ein Fehler genau auftritt, können Sie das Programm Schritt für Schritt fortsetzen. Mit der Taste F7 springt der Debugger auch in jede Methode und Routine hinein und lässt Sie dort die Anweisungen einzeln ausführen. Dies funktioniert natürlich nur, wenn der Quelltext für diese Methoden und Routinen auch zugänglich ist. Wenn Sie den Ablauf einer Methode nicht benötigen, können Sie mit der Taste F8 die aktuelle Zeile ausführen lassen, ohne in die Methode hineinzuspringen.

Um die Fehlersuche zu beenden und den normalen Programmablauf an der aktuellen Stelle wieder aufzunehmen, drücken Sie F9. Falls Sie das Programm vollständig abbrechen und zum Editor zurückzukehren möchten, verwenden Sie die Tastenkombination Strg+F2.


Warum eine RAD-Umgebung Inhaltsverzeichnis Erstellung einer grafischen Oberfläche Grundlagen