Mit Blick auf this question und this question kann ich sehen, dass für backtrace_symbols()
zu arbeiten, muss man mit derFlagge kompilieren.backtrace_symbols() mit beiden -static und -rdynamic
Ich habe es in einem Testprogramm ausprobiert und es funktioniert, aber ich bin ein Programm zu schreiben, die auch mit -static
kompiliert und this page sagt, dass backtrace_symbols()
nicht, wenn nicht funktioniert -static
an den Compiler/Linker übergeben wird.
Gibt es eine schnelle Abhilfe zu diesem oder ich habe nie eine für Menschen lesbare Backtrace-Funktion in meinem statisch verknüpften Programm?
Ja, '-static' ist obligatorisch in meinem Programm. Ich habe es auch mit 'libunwind' versucht, aber meine Beispielprogramme verbinden nicht beide unter Ubuntu 12.04 x86 und x86_64. Ich erhalte immer Verknüpfungsfehler wie: 'undefined reference ' undefined Verweis auf _Ux86_init_local' 'undefined Verweis auf _Ux86_get_reg' ' undefined Verweis auf _Ux86_get_proc_name' sowohl mit binären Ubuntu libunwind _Ux86_step' und neueste selbst erstellte libunwind heruntergeladen aus [hier] (http://download.savannah.gnu.org/releases/libunwind/). – Avio
@Avio Ich habe 'libdwarf' erwähnt, nicht' libunwind'. Ich hatte keine Probleme mit 'libunwind' zu verbinden – qrdl
Ich werde' libdwarf' so schnell wie möglich versuchen. Ich habe gerade 'libunwind' erwähnt, weil es ohne besondere Anforderung eine weitere interessante Alternative sein könnte. Welche Architektur/Distribution haben Sie verwendet, als Sie erfolgreich mit 'libunwind' verbunden waren? – Avio