Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
software:gdb:start [2016-02-17 12:29] – abajric | software:gdb:start [2016-02-17 13:28] – abajric | ||
---|---|---|---|
Zeile 141: | Zeile 141: | ||
< | < | ||
.include " | .include " | ||
+ | |||
+ | .stabs " | ||
+ | .stabs " | ||
.data | .data | ||
Zeile 154: | Zeile 157: | ||
.text | .text | ||
Ltext0: | Ltext0: | ||
- | |||
- | .stabs " | ||
- | .stabs " | ||
reset: | reset: | ||
Zeile 275: | Zeile 275: | ||
</ | </ | ||
+ | |||
+ | ==== Beschreibung der STABS ==== | ||
+ | |||
+ | Online Doku von GDB: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | Definition von Typen ([[https:// | ||
+ | |||
+ | < | ||
+ | .stabs " | ||
+ | .stabs " | ||
+ | </ | ||
+ | |||
+ | Definition von globalen Variablen in der .data Section [[https:// | ||
+ | |||
+ | < | ||
+ | .data | ||
+ | .org 0x100000 | ||
+ | .stabs " | ||
+ | .global targetCommand | ||
+ | targetCommand: | ||
+ | .int 0 | ||
+ | </ | ||
+ | |||
+ | Definition vom Java-Sourcecode. Der erste STABS mit N_SO ist der Build-Ordner. Der Zweite ist der relative Pfad zum Source-File. ([[https:// | ||
+ | |||
+ | < | ||
+ | .org 0x400100 | ||
+ | .stabs "/ | ||
+ | .stabs " | ||
+ | .text | ||
+ | Ltext0: | ||
+ | </ | ||
+ | |||
+ | Definition von Zeilennummern ([[https:// | ||
+ | |||
+ | < | ||
+ | reset: | ||
+ | .stabn N_SLINE, 0, 38, LM1 | ||
+ | LM1: | ||
+ | |||
+ | ... | ||
+ | |||
+ | .stabn N_SLINE, 0, 41, LM5 | ||
+ | LM6: | ||
+ | |||
+ | ... | ||
+ | |||
+ | .stabn N_SLINE, 0, 47, LM4 | ||
+ | LM4: | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | === Definition von Registervariablen === | ||
+ | ([[https:// | ||
+ | |||
+ | < | ||
+ | .stabs " | ||
+ | </ | ||
+ | |||
+ | ==== Debuggen mit GDB ==== | ||
+ | |||
+ | Damit ein PowerPC Target debugged werden kann muss GDB mit PowerPC Support installiert werden: | ||
+ | |||
+ | < | ||
+ | $ sudo apt-get install gdb-multiarch | ||
+ | </ | ||
+ | |||
+ | Bevor GDB gestarted wird, muss das Image-File auf den MPC5200 geladen werden: | ||
+ | |||
+ | < | ||
+ | $ telnet bdi3000inf01 | ||
+ | pcm5200io> | ||
+ | pcm5200io> | ||
+ | </ | ||
+ | |||
+ | GDB starten: | ||
+ | < | ||
+ | $ gdb-multiarch | ||
+ | </ | ||
+ | |||
+ | PowerPC Architektur auswählen: | ||
+ | |||
+ | < | ||
+ | (gdb) set arch powerpc: | ||
+ | </ | ||
+ | |||
+ | ELF-File mit Debug-Informationen auswählen: | ||
+ | |||
+ | < | ||
+ | (gdb) file ./a.out | ||
+ | </ | ||
+ | |||
+ | GDB mit Abatron BDI3000 verbinden: | ||
+ | |||
+ | < | ||
+ | (gdb) target remote bdi3000inf01: | ||
+ | </ | ||
+ | |||
+ | GDB TUI aktivieren und Layout umstellen: | ||
+ | |||
+ | < | ||
+ | (gdb) layout split | ||
+ | (gdb) focus cmd | ||
+ | </ | ||
+ | |||
+ | Alternativ kann ein File (gdb.cmd) mit diesen GDB-Kommandos erstellt werden: | ||
+ | |||
+ | < | ||
+ | set arch powerpc: | ||
+ | file ./a.out | ||
+ | target remote bdi3000inf01: | ||
+ | layout split | ||
+ | focus cmd | ||
+ | </ | ||
+ | |||
+ | Beim Ausführen von GDB muss dieses File angegeben werden, damit alle Kommandos im File ausgeführt werden: | ||
+ | |||
+ | < | ||
+ | $ gdb-multiarch -x ./gdb.cmd | ||
+ | </ | ||
+ | |||
+ | Mit dem folgenden Befehl kann der Java-Sourcecode angezeigt werden: | ||
+ | |||
+ | < | ||
+ | (gdb) list | ||
+ | </ | ||
+ | |||
+ | Mit dem folgenden Befehl wird eine Assembler-Instruktion ausgeführt: | ||
+ | |||
+ | < | ||
+ | (gdb) stepi | ||
+ | </ | ||
+ | |||
+ | Mit dem folgenden Befehl wird Code ausgeführt, | ||
+ | |||
+ | < | ||
+ | (gdb) next | ||
+ | </ | ||
+ | |||
+ | Mit dem folgenden Befehl wird eine definierte Variable ausgegeben: | ||
+ | |||
+ | < | ||
+ | (gdb) print x | ||
+ | </ | ||
+ | |||
+ | Mit dem folgenden Befehl wird eine definierte Variable geändert: | ||
+ | |||
+ | < | ||
+ | (gdb) set var x = 12345 | ||
+ | </ | ||
+ | |||
+ | Mit dem folgenden Befehl kann im Memory geschrieben werden: | ||
+ | |||
+ | < | ||
+ | (gdb) set var *0x100000 = 12345 | ||
+ | </ |