Forum: Mikrocontroller und Digitale Elektronik STM32 - Absturzstelle finden mit GDB nach Sigtrap


von Florian M. (micro-flo)


Lesenswert?

Hallo zusammen,
Gestern war es mal wieder soweit und ein STM32 ist mit einer SIGTRAP 
hängen geblieben.
Der Fehler war ein falscher Speicherzugriff.

Gibt es eine Möglichkeit, die Stelle im Code zu finden, die zuletzt 
ausgeführt wurde vor dem Crash?
Auf die Register kann ich über GDB noch zugreifen.
Und im Stack müssten ja Adressen sein.
Wie komme ich da ran?

Ich freue mich über jede Hilfe, um den nächsten Bug schneller zu finden 
:)

von Tobias F. (coldtobi)


Lesenswert?

bt
(backtrace)

von Florian M. (micro-flo)


Lesenswert?

Der Trace wird mir auch so angezeigt.
Das hier kommt, wenn ich bt ausführe:

#0  0x00000000 in ?? ()
#1  0xfffffff8 in ?? ()
#2  0xfffffff8 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt 
stack?)


Das hilft mir leider noch nicht weiter.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Schaue hier:
Beitrag "Cortex-M3 Programm-Counter auslesen?"

Damit kann man sich einen eigenen Trace aufbauen. Ich brauch das 
ziemlich oft und hilft ungemein. Die Adressen der Routinen stehen in der 
MAP-Datei.

von Florian M. (micro-flo)


Lesenswert?

Sehr gut!
In der .lss Datei sind sogar alle Anweisungen drin.
Damit kann man perfekt die aktuelle Stelle finden.
Das wird mir in Zukunft viel Zeit sparen beim Debuggen.

Danke!

von Bernhard S. (menecken)


Lesenswert?


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
Noch kein Account? Hier anmelden.