KDbg - Benutzerhandbuch

Inhalt


Einleitung

KDbg ist eine grafische Benutzeroberfläche für gdb, den GNU-Debugger.

Das bedeutet, dass KDbg selbst nicht der Debugger ist. Vielmehr kommuniziert KDbg mit gdb, indem Befehlszeilen and diesen geschickt werden und die Ausgabe, wie z.B. Variablenwerte, entgegengenommen werden. Die Menübefehle und Mausklicks werden in gdb-Befehle umgesetzt, und die Ausgabe von gdb wird in (mehr oder weniger) sichtbare Information umgesetzt, wie zum Beispiel die Struktur von Variablen.

Eine Folge davon ist, dass KDbg vollständig von den Fähigkeiten des verwendeten Befehlszeilendebuggers, gdb, abhängig ist. KDbg kann nicht mehr als gdb leisten. Wenn Sie zum Beispiel einen gdb haben, der Programme mit Threads nicht unterstützt, dann kann auch KDbg das nicht (obwohl ein Threads-Fenster vorhanden ist).

Mit KDbg arbeiten

Bevor Sie mit der Arbeit beginnen, sollten Sie die globalen Einstellungen prüfen, indem Sie Datei|Globale Einstellungen aufrufen.

Ein zu debuggendes Program angeben

Um ein Programm zu debuggen, wählen Sie Datei|Programm. Wenn Sie das Programm schon einmal debuggt haben, können Sie es auch aus der Liste unter Datei|Zuletzt göffnete Programme wählen. Das Programm wird jetzt geladen.

Wenn Sie einen Core-Dump verwenden wollen, müssen Sie zuerst das Programm, das den Core-Dump erzeugt hat wie gerade erwähnt laden, dann wählen Sie Datei|Core dump aus dem Menü. KDbg zeigt die Stelle an, die den Core-Dump verursacht hat.

Sie können nun Haltepunkte setzen, indem Sie die Einträge im Menü Haltepunkt oder im Rechte-Maus-Menü oder in der Liste der Haltepunkte verwenden.

Sie können auch programmspezifische Einstellungen vornehmen, indem Sie Datei|Einstellungen wählen.

Das Programm ausführen

Nun führen Sie das Programm aus, indem Sie Ausführung|Ausführen wählen. Das Programm arbeitet nun wie gewöhnlich, bis es beendet wird, auf einen Haltepunkt oder Watchpoint trifft, oder ein Signal empfängt.

Sie können das Programm mit Argumenten ausführen, ein Arbeitsverzeichnis festlegen und auch Umgebungsvariablen definieren. Dazu wählen Sie Ausführung|Argumente und machen Ihre Angaben im Programmargumente-Dialog.

Weiters können Sie sich in ein Programm einhängen (attachen), das bereits ausgeführt wird. Dazu laden Sie das Programm zuerst wie oben beschrieben, dann wählen Sie Ausführung|Attachen. Geben Sie die Prozessnummer an und klicken Sie OK. Das Programm wird jetzt angehalten (aber nicht beendet), und der derzeitige Stand des Programms wird im Quellcode-Fenster angezeigt.

Das Programm wurde angehalten - was nun?

Wenn das Programm an einem Haltepunkt, Watchpoint oder wegen eines Signals angehalten wird, zeigt das Quellcode-Fenster die Zeile, in der das Programm gerade arbeitete. Es passiert häufig, dass das Programm wegen eine Signals (oftmals SIGSEGV, Speicherzugriffsfehler) in einer Funktion angehalten wird, die sich nicht in jenem Programmteil befindet, den Sie geschrieben haben. In diesem Fall betrachten Sie das Stack-Fenster genauer: Suchen Sie nach einer Funktion, die Sie geschrieben haben (beginnen Sie am oberen Ende) und klicken Sie darauf. Das bringt Sie an eine Stelle, an der Sie mit der Suche nach dem tatsächlichen Programmfehler beginnen können.

Im Menü Ausführung finden Sie Befehle, die Sie zum Ausführen und schrittweisen Abarbeiten des Programms verwenden. Weiters können Sie das laufende Programm unterbrechen. Die wichtigen Befehle können auch mit Funktionstasten gegeben werden. Zum effizienten Arbeiten empfehle ich, dass Sie sich diese Tasten eingewöhnen.
Diese Funktionen sind nicht konfigurierbar, aber vielleicht wollen Sie ein Stückchen Code beisteuern, mit dem das geht?

Im Menü Haltepunkt finden Sie Befehle zum Setzen, Entfernen, Aktivieren und Inaktivieren von permanenten und temporären Haltepunkten. Natürlich können Sie auch eine Liste der Haltepunkte anzeigen. Sie können einen Haltepunkt auch setzen, indem Sie mit der Maus in den Freiraum links der entsprechenden Quellcode-Zeile klicken (mit der linken Maustaste); weiters können sie einen vorhandenen Haltepunkt mit der mittleren Maustaste aktivieren und deaktivieren.

Das Zahnrad in der Werkzeugleiste zeigt an, ob gdb gerade arbeitet: Dies ist der Fall, wenn es rotiert. Solange es schnell rotiert, nimmt KDbg kein Eingaben an; wenn es langsam rotiert, aktualisiert KDbg gerade alle Variablenanzeigen.

Die Informationsfenster von KDbg

KDbg zeigt Information in einer Reihe verschiedener Fenster an. Im Menü Ansicht finden Sie die Befehle, die diese Fenster anzeigen und schliessen. Es handelt sich dabei um dockende Fenster, sodass Sie deren Anordnung beliebig verändern können.

Tipps und so weiter

Bekannte Probleme

gdb 4.16 hat Probleme bei der Handhabung von C++-Klassen mit virtuellen Basisklassen. (Diese kommen häufig in CORBA-Programmen vor.) Gdb stürzt dabei häufig aufgrund eines Speicherzugriffsfehlers ab. KDbg erkennt, wenn gdb unerwartet beendet wird. Leider lässt sich nicht wirklich was dagegen unternehmen. Sie müssen gdb mittels Datei|Programm neu starten, das heißt auch für die Debug-Sitzung zurück an den Start :-(.

Die Typerkennung von KDbg arbeitet nur, wenn die Bibilotheken dynamisch ins Programm gebunden sind.

Autor

KDbg wurde von Johannes Sixt mit vielen weiteren Helfern geschrieben.
Die KDbg-Homepage befindet sich unter http://www.kdbg.org/.