Wie erhalte ich den GDB-Call-Stack-Trace?

Aug 19 2020

Ich habe einen Core-Dump und eine Datei, in der Debug-Informationen gespeichert sind. Kann ich gdb verwenden, ohne eine ausführbare Datei zu verwenden, um eine Aufrufliste mit dem Namen von Funktionen und Zeilen zu erhalten?

Antworten

1 EmployedRussian Aug 20 2020 at 10:04

kann ich gdb verwenden, ohne eine ausführbare Datei zu verwenden, um eine Aufrufliste mit dem Namen von Funktionen und Zeilen zu erhalten?

Zumindest unter Linux/x86_64 lautet die Antwort nein: Die danach gespeicherten Informationen objcopy --only-keep-debugsind nicht ausreichend; Sie benötigen auch die ausführbare Datei.

Dies geschieht (zumindest teilweise), weil der debug_filenicht über den .eh_frameAbschnitt verfügt, der zum Abwickeln notwendig ist x86_64.

Wenn Sie die Core-Dumps selbst debuggen, gibt es keinen Grund, sie zu erstellen debug_file– behalten Sie einfach die ursprüngliche ausführbare Datei mit den vollständigen Debug-Informationen zum Debuggen (Sie können immer noch eine kleinere gestrippte Datei an Ausführungsmaschinen senden).