machen gdb laden einer shared library aus einem bestimmten Pfad
Bekam ich einen Kern während der Ausführung einer Anwendung, und ich rettete die ausführbare Datei, die corefile und eine shared-library, die die Anwendung in /tmp
überprüfen Sie später. Danach baute ich die Bibliothek neu aufgebaut und begonnen die ausführbare Datei wieder.
Nun, wenn ich versuche zu Debuggen, der Kern, gdb ist das laden der gemeinsam genutzten Bibliothek von seinem ursprünglichen Pfad und nicht aus dem Verzeichnis /tmp
wo ich gespeichert, die ursprüngliche Bibliothek.
Beispielsweise der ursprüngliche Pfad war /opt/mydir/lib/libmylib.so.0
.
gdb ist be-diese shared library, während ich will es laden /tmp/libmylib.so.0
.
Die Anwendung verwendet außerdem einige standard-Bibliotheken, die in /usr/lib
und /lib
Verzeichnissen, so dass ich nicht wollen, dass diese Pfade geändert zu erhalten. Nur ändern wollen /opt/mydir/lib/
-> /tmp
. Wie kann ich das tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den einfachste Lösung ist vorübergehend wiederherstellen
/opt/mydir/lib/libmylib.so.0
auf die Kopie, die verwendet wurde, bei crash time (D. H. die jetzt in/tmp
), analysieren den Kern, dann wieder zurück die neue version.Wenn Sie nicht wollen, zu tun, dass
set solib-search-path
undset sysroot
sind Ihre Freunde.Beachten Sie, dass Sie festlegen müssen, sowohl vor der Beladung der
core
. Diese Sequenz sollte aber funktionieren: