Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage |
<< | < | > | >> | API | Kapitel 53 - Hilfsprogramme des JDK |
jdb [ classfile ] |
jdb ist der Debugger des JDK. Er bietet die Möglichkeit, Programme kontrolliert ablaufen zu lassen und dabei Breakpoints zu setzen, im Einzelschrittmodus den nächsten Befehl ausführen zu lassen oder den Inhalt von Variablen oder Objekten zu inspizieren. Man sollte allerdings nicht zu große Erwartungen an jdb stellen, denn das Programm ist ein Kommandozeilendebugger in schönster UNIX-Tradition. Mit den grafischen Debuggern der integrierten Java-Entwicklungsumgebungen hat er nur wenig gemeinsam. Leider ist er nicht nur umständlicher zu bedienen, sondern lässt auch einige wichtige Features moderner Debugger vermissen.
Damit ein Programm debugt werden kann, sollte es mit der Option -g
übersetzt werden. Dadurch werden symbolische Informationen in
die Klassendatei geschrieben, die der Debugger zur Interpretation
von lokalen Variablen benötigt. Beim Aufruf des Debuggers kann
die zu untersuchende Klassendatei als Argument angegeben werden:
jdb classfile
Nachdem der Debugger gestartet wurde, meldet er sich mit seiner Kommandozeile und ist bereit, Befehle entgegenzunehmen. Die wichtigsten von ihnen werden in Tabelle 53.4 vorgestellt und kurz erläutert.
Kommando | Bedeutung |
? | Liefert eine Übersicht aller Kommandos. Alternativ kann auch das Kommando help verwendet werden. |
!! | Wiederholt das letzte Kommando. |
run | Startet das geladene Programm. Falls die Klassendatei mit load geladen wurde, müssen zusätzlich der Klassenname und ggfs. weitere Parameter des Programms übergeben werden. Nach Ausführung dieses Programms läuft das Programm bis zum nächsten Breakpoint oder bis es mit dem suspend-Kommando angehalten wird. |
quit | Beendet den Debugger. Alternativ kann auch das Kommando exit verwendet werden. |
stop in | Setzt einen Breakpoint auf den Anfang einer
Methode. Das Kommando erwartet den Namen der Klasse, einen Punkt und
den Namen der Methode als Argument. Beispiel:
stop in JDBBeispiel.actionPerformed |
stop at | Setzt einen Breakpoint auf eine vorgegebene
Zeile. Dazu müssen der Name der Klasse, ein Doppelpunkt und die
Zeilennummer innerhalb der Quelldatei angegeben werden. Beispiel:
stop at JDBBeispiel:48 |
clear | Löscht einen Breakpoint. Als Argument müssen der Klassenname, gefolgt von einem Doppelpunkt und der Zeilennummer, in der sich der Breakpoint befindet, angegeben werden. Es gibt keine Möglichkeit, eine Liste der aktuellen Breakpoints anzeigen zu lassen. |
list | Zeigt den aktuellen Ausschnitt des Quelltextes an, an dem das Programm angehalten wurde. Die als Nächstes auszuführende Zeile wird durch einen Pfeil markiert. Alternativ kann auch der Name einer Methode oder eine Zeilennummer an das Kommando übergeben werden. |
step | Nachdem ein Programm angehalten wurde, kann es mit diesem Kommando im Einzelschrittmodus fortgeführt werden. Befindet sich an der Aufrufstelle ein Methodenaufruf, springt das Kommando in die Methode hinein und bleibt bei der ersten ausführbaren Anweisung stehen. |
next | Wie step, springt dabei aber nicht in einen Methodenaufruf hinein, sondern führt die Methode als Ganzes aus und bleibt beim nächsten Kommando nach dem Methodenaufruf stehen. |
step up | Führt die aktuelle Methode bis zum Ende aus. |
cont | Führt das Programm nach einem Breakpoint fort. Es läuft dann bis zum nächsten Breakpoint oder bis es mit dem suspend-Kommando angehalten wird. |
Zeigt den Inhalt der Variablen an, die als Argument übergeben wurde. print verwendet dazu die Methode toString, die in allen Objektvariablen implementiert ist. Damit eine Variable angezeigt werden kann, muss sie an der Aufrufstelle sichtbar sein. Es gibt leider keine Möglichkeit, den Inhalt einer Variablen aus dem Debugger heraus zu verändern. | |
dump | Zeigt den Inhalt der Objektvariable, die als Argument übergeben wurde, inklusive aller Membervariablen an. Damit eine Variable angezeigt werden kann, muss sie an der Aufrufstelle sichtbar sein. |
locals | Gibt eine Liste aller lokalen Variablen und ihrer aktuellen Inhalte aus. |
where | Zeigt einen Stacktrace an. |
Tabelle 53.4: Kommandos von jdb
Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0 |
<< | < | > | >> | API | © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de |