KDbg - Benutzerhandbuch

Inhalt


Einleitung

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

Dieses Dokument bietet einige (leider wenige) Hinweise zur Benutzung von KDbg.

Für die experimentierfreudigen Benutzer gibt's ein bisschen Dokumentation, wie KDbg Typen versteht, etwa QString. (Leider nur in englischer Sprache, aber das sollte kein Problem darstellen.)

Was gibt's hier zu sehen?

KDbg's Hauptfenster besteht aus vier Teilen:

Links oben wird der Quellcode angezeigt. Meistens werden Quellcode-Dateien automatisch geöffnet. Mit Datei|Quellcode öffnen können Sie Dateien manuell öffnen. Alle offenen Dateien werden im Menu Fenster angezeigt, mit dem Sie auch gleich zwischen den offenen Dateien hin- und herschalten können.

Links unten wird der Backtrace (Call Stack, Stack Frames), d.h. die Funktionnen, die das Programm im Augenblick betreten und noch nicht verlassen hat, angezeigt. Das innerste Frame (in dem sich das Programm gerade befindet) befindet sich an erster Stelle. Klicken Sie auf ein Frame, um die lokalen Variablen in diesem Frame anzuzeigen.

Rechts oben werden die lokalen Variablen angezeigt. Sobald das Programm angehalten wird (z.B. durch einen Breakpoint), wird diese Anzeige aktualisiert.

Rechts unten zeigt beliebige Ausdrücke an (diese bezeichnet man auch als Watches). Ein neuer Ausdruck wird hinzugefügt, indem dieser im Eingabefeld eingegeben wird und dann auf Neu geklickt wird. Um einen Ausdruck zu entfernen, klicken Sie diesen an (an der Wurzel des entsprechenden Baums) und klicken dann auf Entf.

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.

Benutzung von KDbg

Um ein Programm zu debuggen, wählen Sie Datei|Programm. Das Programm wird jetzt geladen. Ein xterm-Fenster wird geöffnet, das die Ausgabe des Programms anzeigen wird. 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 Menu. Kdbg zeigt die Stelle an, die den Core-Dump verursacht hat.

Mit dem Menupunkt Ausführung|Argumente können Sie auch Programmargumente, das Arbeitsverzeichnis sowie  Umgebungsvariablen setzen.. Siehe unten.

Im Menu 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 Menu Haltepunkt finden Sie Befehle zum Setzen, Entfernen, Aktivieren und Inaktivieren von permanenten und temporären Haltepunkten. 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.

Im Menu Ansicht finden Sie Befehle, um verschiedene Fenster zu öffnen und zu schließen. Bei diesen handelt es sich um dockende Fenster, die Sie in beliebiger Weise anordnen können.

Die Liste der Haltepunkte

Die Liste der Haltepunkte können Sie mit dem Menupunkt Ansicht|Haltepunkte anzeigen. Diese zeigt für jeden Haltepunkt folgendes an: Den Ort, die Anzahl der Stopps, die Anzahl der nächsten zu ignorierenden Stopps (falls gesetzt) sowie eine Haltebedingung (falls gesetzt). Das Piktogramm links zeigt an, ob der Haltepunkt aktiviert (tiefroter Punkt) oder deaktiviert (hellroter Punkt) ist, ob es sich um einen temporären Haltepunkt handelt (eine winzige Uhr ist sichtbar) und ob der Haltepunkt bedingt ist (ein Fragezeichen ist sichtbar).

Sie können eine Bedingung (sodass das Programm nur stehen bleibt, wenn die Bedingung erfüllt ist) oder die Anzahl der zu ignorierenden Stopps (sodass das Programm die nächsten n Male nicht stehen bleibt, die es über diesen Haltepunkt läuft) setzen. Dazu wählen sie den Schalter Bedingt und geben die Anzahl der zu ignorierenden Treffer und/oder die Bedingung ein.

Programmargumente, Arbeitsverzeichnis, Umgebungsvariablen setzen

Mit Ausführen|Argumente öffnen Sie einen Dialog, in dem Sie Programmargumente, das Arbeitsverzeichnis sowie Umgebungsvariablen setzen können.

In der obersten Eingabezeile können Sie die Programmargumente eingeben, die an das Programm übergeben werden sollen. Diese werden beim nächsten Programmstart verwendet.

Im Eingabefeld darunter können Sie das Arbeitsverzeichnis angeben. Dieses wird sofort an gdb übergeben, sobald Sie OK drücken. Das Programm verwendet das neue Arbeitsverzeichnis allerdings erst beim nächsten Start.

Im Bereich für Umgebungsvariablen können Sie einen Ausdruck in der Form VARIABLE=Wert eingeben und dann Ändern klicken, um der Umgebungsvariablen VARIABLE einen Wert zuzuweisen. Um eine Variable zu entfernen, wählen Sie diese zuerst aus der Liste darunter aus und klicken dan Löschen. Um einen Wert zu ändern, geben Sie einfach den neuen Wert ein und klicken Ändern. Wenn Sie den Namen der Variable ändern und Ändern clicken, erzeugen Sie eine neue Variable! Die neuen Umgebungsvariablen werden erst beim nächsten Programmstart verwendet.

Wenn Sie glibc2 unter Linux verwenden, ist es sehr wichtig, dass Sie der Umgebungsvariablen LD_BIND_NOW den Wert 1 zuweisen. Wenn diese Variable nicht gesetzt ist, können solche Funktionen nicht betreten werden, die von der Bibliothek libc und anderen Shared Libraries importiert werden.

Globale Einstellungen

Mit dem Menupunkt Datei|Globale Einstellungen können Sie folgende Optionen einstellen: Wenn Sie eine alternative Version von gdb verwenden wollen, geben sie diese unter Aufruf von GDB an. Die Standardeinstellung ist gdb -fullname -nx. Achtung: Sie müssen jedenfalls diese beiden Argumente übergeben; wenn Sie sie weglassen, kann KDbg nicht funktionieren. Wenn Sie das Eingabefeld leer lassen, wird die Standardeinstellung verwendet.

Falls Sie ein anderes Terminal-Programm verwenden wollen, das die Ausgabe des Programms anzeigt, geben Sie dieses unter Terminal für die Programmausgabe an. Die Standardeinstellung ist xterm -name kdbgio -title %T -e sh -c %C. In diesem Eintrag wird %T durch eine Überschrift und %C durch ein Bourne-Shell-Skript ersetzt, das in eine Endlosschleife landet, damit sich das Fenster nicht schließt. (Keine Sorge, das Skript frisst keine CPU-Zeit, sondern ruft einfach nur sleep 3600 in einer Schleife auf :) Eine alternative für diesen Eintrag wäre zm Beispiel konsole -nowelcome -name kdbgio -caption %T -e sh -c %C.

Tips und Tricks

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://members.telecom.at/~johsixt/kdbg.html.