Wie erhalte ich den GDB-Call-Stack-Trace?
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
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).