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 :)
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.
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.
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!
Eventuell ist auch http://stackoverflow.com/questions/9837594/sigtrap-despite-no-set-breakpoints-hidden-hardware-breakpoint hilfreich
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.