OK, habe ich die Linux Dwarf ldw Bibliothek verwendet backtrace_symbols Ausgabe auf den Quellcode und Zeilennummern zu konvertieren, aber ich habe einen Haken getroffen. backtrace_symbols gibt Offsets im Speicher, von denen ich die Basisadresse subtrahiere (erhalten mit dladdr()) vor der Verwendung als Eingabe in Dwarf. Aber es scheint, dass ich für die Eltern-ausführbare Datei die Basisadresse NICHT subtrahieren sollte, weil die Dwarf-Offsets sie zu enthalten scheinen.Dwarf Verschiebungen und gemeinsam genutzte Objekte vs Executables
Also, wie kann ich entweder EXE und SO in meinem Code unterscheiden (ich hoffe, es gibt etwas Besseres als 'suche nach Endung .so') oder gibt es eine andere Funktion, die ich anrufen kann, die die Basisadresse erhalten oder Null für die Eltern-EXE?