Debugging mit dem Tool idbx

Anweisungen zur Verwendung des Tools idbx für das Debugging eines Programms über die Befehlszeile.

Informationen zu diesem Vorgang

Der Benutzer kann das Tool idbx ausführen, indem er den Befehl "idbx" bei der Eingabeaufforderung ausführt. Auf diese Weise kann der Benutzer ein Debug eines Programms ohne Verwendung einer UI-Workbench ausführen.

$ idbx testProg
Befehlsliste
assign <Variable> = <Ausdruck>
Den Wert des Ausdrucks der Variable zuordnen.
clear <Zeilennummer>
Alle Unterbrechungspunkte und Traces in der angegebenen Zeile entfernen.
Anmerkung: Siehe auch delete.
cont <Signalnummer>
cont <Signalname>
Ausführung an dem Punkt fortsetzen, an dem sie gestoppt wurde. Wird ein Signal angegeben, wird der Prozess so fortgesetzt, als ob er das Signal empfangen hätte. Andernfalls wird der Prozess so fortgesetzt, als ob er nicht gestoppt worden wäre.
delete <Statusnummer>
delete all
delete tskip [ für t<Threadnummer> ]
Die Traces oder Stopps, die den angegebenen Nummern entsprechen, oder die verbleibende tskip-Anzahl für den angegebenen Thread werden bzw. wird entfernt. Die den Traces und Stopps zugeordneten Nummern und die verbleibende tskip-Anzahl für den Thread können mit dem Befehl "status" ausgegeben werden.
disable <Statusnummer>
disable
Die Traces oder Stopps, die den angegebenen Nummern entsprechen, werden inaktiviert. Die den Traces und Stopps zugeordneten Nummern können mit dem Befehl "status" ausgegeben werden.
down
down <Anzahl>
up
up <Anzahl>
Die aktuelle Funktion, die zum Auflösen von Namen verwendet wird, um <Anzahl> Ebenen im Stack nach oben oder unten verschieben. Der Standardwert für <Anzahl> ist eins.
enable <Statusnummer>
enable all
Die Traces oder Stopps, die den angegebenen Nummern entsprechen, werden aktiviert. Die den Traces und Stopps zugeordneten Nummern können mit dem Befehl "status" ausgegeben werden.
goto <Zeilennummer>
goto "<Dateiname>" : <Zeilennummer>
gotoi <Adresse>
Den Programmbefehlszähler auf <Adresse> oder auf eine Adresse bei <Zeilennummer> setzen. Die Variable unsafegoto muss definiert sein, wenn ein goto außerhalb der aktuellen Funktion gewünscht wird.
help
help [> <Dateiname> ]
help <Befehl> [> <Dateiname> ]
help <Thema> [> <Dateiname> ]
Informationen zu dem Befehl oder Thema ausgeben. (Die Zeichenfolge zur Beschreibung eines Themas kann abgekürzt werden.) Lange Nachrichten können mit dem "pg"-Standardaliasnamen seitenweise angezeigt werden. Beispiel: "pg" (help set_variables).
Anmerkung: "pg" wird zurzeit nicht unterstützt.
Anmerkung: Die Umleitung in eine Datei wird zurzeit nicht unterstützt.
list [ <Quellenzeilennummer> [, <Quellenzeilennummer> ]]
list <Prozedur>
Die Zeilen in der aktuellen Quellendatei von der ersten Zeilennummer bis zur zweiten Zeilennummer einschließlich auflisten. Werden keine Zeilen angegeben, werden die nächsten 10 Zeilen aufgelistet. Wird der Name einer Prozedur oder Funktion angegeben, werden die Zeilen n-k bis n+k aufgelistet, wobei n die erste Anweisung in der Prozedur oder Funktion ist und k durch listwindow definiert wird.
listi
listi [ <Adresse> [ , <Adresse> ]]
listi at <Quellenzeilennummer>
listi <Prozedur>
Die Instruktionen ab der aktuellen Position des Programmbefehlszählers oder der angegebenen Adresse, Zeilennummer oder Prozedur auflisten. Die Anzahl der ausgegebenen Instruktionen wird von der internen dbx-Variablen listwindow gesteuert.
move <Quellenzeilennummer>
Die nächste Zeile, die vom list-Befehl angezeigt werden soll, in Quellenzeilennummer ändern.
next
next <Anzahl>
Code bis zur nächsten Zeile ausführen. Wird eine Anzahl angegeben, werden die nächsten (Anzahl) Zeilen ausgeführt. Der Unterschied zwischen diesem Befehl und "step" ist Folgender: Wenn die Zeile einen Aufruf für eine Prozedur oder Funktion enthält, stoppt der Befehl "step" am Anfang dieses Blocks. Im Gegensatz dazu stoppt der Befehl "next" nicht.
nexti
nexti <Anzahl>
Ein einzelner Schritt wie mit "next"; ausgeführt wird jedoch eine einzige Instruktion und keine Quellenzeile. Wird eine Anzahl angegeben, werden die nächsten (Anzahl) Instruktionen ausgeführt.
print <Ausdruck> [ , <Ausdruck> ]
print <Prozedur (<Parameter>)
Gibt den Wert des angegebenen Ausdrucks aus. Auch die Werte von Allgemeinregistern und Gleitkommaregistern können mit diesem Befehl ausgegeben werden.
"print <Prozedur> (<Parameter>)" führt den Objektcode aus, der der Prozedur zugeordnet ist, und gibt den Rückgabewert aus.
Bei der Namensauflösung wird zunächst der statische Bereich der aktuellen Funktion und dann der dynamische Bereich verwendet, wenn der Name nicht im statischen Bereich definiert ist. Ist weder die statische noch die dynamische Suche erfolgreich, wird ein beliebiges Symbol ausgewählt und eine Nachricht wie "[<qualifizierter Name> wird verwendet]" wird ausgegeben. Die Prozedur zur Namensauflösung kann außer Kraft gesetzt werden, indem eine Kennung durch einen Blocknamen qualifiziert wird, z. B. "Modul.Variable". Für C werden Quellendateien als Module behandelt, deren Name der Dateiname ohne ".c" ist.
prompt
prompt "Zeichenfolge"
Zeigt die dbx-Eingabeaufforderung an oder ändert diese in "Zeichenfolge".
quit
dbx verlassen (Programm wird beendet).
registers
Den Inhalt aller Allgemeinregister, Systemsteuerungsregister, Gleitkommaregister und des aktuellen Instruktionsregisters ausgeben. Verwenden Sie zum Anzeigen von Gleitkommaregistern den dbx-Unterbefehl "unset noflregs".
Es ist möglich, Register einzeln anzuzeigen oder ihnen einzeln Werte zuzuordnen, indem die folgenden vordefinierten Registernamen verwendet werden: r0 bis $r31 für die Allgemeinregister; fr0 bis $fr31 für die Gleitkommaregister; sp, iar, cr, link für den Stackzeiger, den Programmbefehlszähler, das Bedingungsregister bzw. das Verbindungsregister.
run [<Argumente>] [< <Dateiname> ] [> <Dateiname> ]
[>> <Dateiname> ] [>! <Dateiname> ]
[2> <Dateiname> ] [2>> <Dateiname> ]
[>& <Dateiname> ] ]>>& <Dateiname> ]
rerun [<Argumente>] [< <Dateiname> ] [> <Dateiname> ]
[>> <Dateiname> ] [>! <Dateiname> ]
[2> <Dateiname> ] [2>> <Dateiname> ]
[>& <Dateiname> ] ]>>& <Dateiname> ]
Mit der Ausführung der Objektdatei beginnen und dabei Argumente als Befehlszeilenargumente übergeben; mit < oder > kann die Ein- oder Ausgabe wie bei einer Shell umgeleitet werden. Wird "rerun" ohne Argumente angegeben, wird die vorherige Argumentliste an das Programm übergeben; ansonsten ist der Befehl mit run identisch.
Anmerkung: Argumente für die Befehle run und rerun werden zurzeit nicht unterstützt.
return
return <Prozedur>
Verarbeitung fortsetzen, bis eine Rückkehr zu <Prozedur> ausgeführt wird oder bis die aktuelle Prozedur zurückkehrt, wenn keine Prozedur angegeben ist.
set <Name>
set <Name> = <Ausdruck>
Der Befehl set definiert Werte für dbx-Variablen. Die Namen dieser Variablen dürfen keine Konflikte mit den Namen in dem Programm verursachen, für das das Debug erfolgt, und sie werden innerhalb anderer Befehle auf die entsprechenden Ausdrücke erweitert. Verwenden Sie "unset", um eine festgelegte Variablendefinition zu entfernen. Wenn Sie "help set_variables" eingeben, werden Definitionen zu vordefinierten Variablen angezeigt.
skip [<Anz.>]
Wiederaufnehmen und den nächsten Unterbrechungspunkt ignorieren. Ist "Anz." angegeben, die nächsten "Anz." Unterbrechungspunkte ignorieren.
status [> <Dateiname> ]
status more [> <Dateiname> ]
Die zurzeit aktiven Trace- und Stoppbefehle mit den zugehörigen dbx-Unterbefehlen sowie die verbleibende tskip-Anzahl für den Thread anzeigen.
step
step <Anzahl>
Eine einzige Zeile ausführen. Wird eine Anzahl angegeben, werden die nächsten (Anzahl) Zeilen ausgeführt. Der Unterschied zwischen diesem Befehl und "next" ist Folgender: Wenn die Zeile einen Aufruf für eine Prozedur oder Funktion enthält, ruft der Befehl "step" diese Prozedur oder Funktion auf. Dies ist bei dem Befehl "next" nicht der Fall.
Anmerkung: Siehe auch: set_variables stepignore.
stepi
stepi <Anzahl>
Eine einzige Instruktion ausführen. Wird eine Anzahl angegeben, werden die nächsten (Anzahl) Instruktionen ausgeführt.
!stop if <Bedingung>
stop at <Zeilennummer> ![if <Bedingung>]
stop in <Prozedur> ![if <Bedingung>]
!stop <Variable> [if <Bedingung>]
!stop <Variable> at <Zeilennummer> [if <Bedingung>]
!stop <Variable> in <Prozedur> [if <Bedingung>]
!stop on load ["<Modul>"] [if <Bedingung>]
!stop on load ["<Modul>(<Member>)"] [if <Bedingung>]
Ausführung stoppen, wenn die angegebene Zeile erreicht, die angegebene Prozedur oder Funktion aufgerufen, die angegebene Variable geändert, das angegebene Modul geladen oder entladen wird oder die angegebene Bedingung wahr ist.
Anmerkung: ! wird zurzeit nicht unterstützt.
unset <Name>
Die Definition für <Name> entfernen.
whatis <Name>
Die Deklaration des angegebenen Namens ausgeben.
where [Anfangsframe Endframe] [> <Dateiname>]
Einen Stack-Trace der aktiven Prozeduren und Funktionen ausgeben, die den Framenummern Anfangsframe bis Endframe zugeordnet sind. Definieren Sie stack_details für einen ausführlichen Stack-Trace.
visual <Hostname> <Portnummer>
IDBX-Debugger bei dem angegebenen Host und Port des UI-Dämons mit einer UI-Workbench verbinden.

Rückmeldung