Hi, wenn man mal wieder schrott in den Cortex-M3 programmiert hat ladet man ja meist im hard fault interrupt handler. Da steht nur der Befehl bkpt. Also etwa so: (gdb) load (gdb) monitor reset init (gdb) continue Program received signal SIGTRAP, Trace/breakpoint trap. hard_fault_handler () at so_ein_schrott_code.c:100 100 bkpt (gdb) backtrace #0 hard_fault_handler () at so_ein_schrott_code.c:100 #1 0xfffffff8 in ?? () #2 0xfffffff8 in ?? () Wer kennt einen "schönen" hard_fault_handler mit dem ein backtrace mich bis zu main zurück führt (wenn mein code nicht zu schlimm gewütet hat)? Danke, Lars
ARM Asm Anfänger schrieb im Beitrag #2532010: > Da steht nur der Befehl bkpt. Kannst Du ja ändern: Ausgabe der Register via UART, LEDs blinken, ... ARM Asm Anfänger schrieb im Beitrag #2532010: > Wer kennt einen "schönen" hard_fault_handler mit dem ein backtrace mich > bis zu main zurück führt Wozu zurück, was willst Du dort :-) ? Im "Hard fault handler" kannst Du die Adresse auslesen, wo es geknallt hat. Reicht das nicht aus? In Analogie zu einem "try ... catch finally" benötigt man ja eher die "catch/finally"-Adresse für einen Rücksprung an eine definierte Stelle. Im ARM CM3 tech ref manual steht beschrieben, wie der Stack aussieht. Sicherlich kann man den irgendwie umbiegen, so dass man zurückspringen kann.
ARMv7-M Exceptions kann AFAIK nur der gepatchte GDB von CodeSourcery - der z.B. bei G++ lite dabei ist - wenn man ihm dies in einer target.xml Datei mitteilt.
1 | (gdb) set tdesc filename Path\gdbtarget.xml |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.