Ich hatte ein ähnliches Problem und das Hinzufügen von --allow-mismatched-debuginfo=yes
Parametern zu valgrind löste das Problem.
Valgrind kann keine Debug-Symbole finden, selbst mit --extra-debuginfo-path
Ich versuche, Valgrind auf einem eingebetteten Debian-basierten PowerPC-System zu installieren. Ich habe es erfolgreich kompilieren können, aber jetzt beschwert sich, dass es keine Debug-Informationen finden kann. Ich habe nicht entfernte Kopien der relevanten gemeinsam genutzten Objekte im Dateisystem abgelegt und Valgrind über dieses Verzeichnis informiert, aber es funktioniert immer noch nicht.
Aufruf:
root@192.168.0.200:/# /root/valgrind/bin/valgrind --extra-debuginfo-path=/root/valgrind/usr/lib/debug /path/to/my_program -log ==6000== Memcheck, a memory error detector ==6000== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==6000== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info ==6000== Command: /path/to/my_program -log ==6000== valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strlen valgrind: in an object with soname matching: ld.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Cannot continue -- exiting now. Sorry.
Die fehlerhafte Datei ld.so.1
befindet sich in /lib
, und meine nicht entfernten Kopien befinden sich in einem separaten Verzeichnis:
root@192.168.0.200:/# find / -name ld.so.1 /lib/ld.so.1 /root/valgrind/usr/lib/debug/ld.so.1 /root/valgrind/usr/lib/debug/lib/ld.so.1
Meine nicht gestrippten Kopien libc6-dbg_2.7-10ubuntu3_powerpc.deb
scheinen kompatibel zu sein:
root@192.168.0.200:/# file /lib/ld.so.1 /root/valgrind/usr/lib/debug/ld.so.1 /root/valgrind/usr/lib/debug/lib/ld.so.1 /lib/ld.so.1: symbolic link to `ld-2.7.so' /root/valgrind/usr/lib/debug/ld.so.1: symbolic link to `ld-2.7.so' /root/valgrind/usr/lib/debug/lib/ld.so.1: symbolic link to `ld-2.7.so' root@192.168.0.200:/# file /lib/ld-2.7.so /root/valgrind/usr/lib/debug/ld-2.7.so /root/valgrind/usr/lib/debug/lib/ld-2.7.so /lib/ld-2.7.so: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, with unknown capability 0x41000000 = 0x11676e75, with unknown capability 0x10000 = 0x90401, stripped /root/valgrind/usr/lib/debug/ld-2.7.so: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, not stripped /root/valgrind/usr/lib/debug/lib/ld-2.7.so: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), statically linked, not stripped
Und wenn ich die Funktionsweise verstehe objdump
, scheint die von Valgrind erwähnte "umgeleitete Funktion" tatsächlich einen Eintrag in der Debug-Kopie zu haben:
root@192.168.0.200:/# objdump -x /lib/ld-2.7.so | grep strlen root@192.168.0.200:/# objdump -x /root/valgrind/usr/lib/debug/lib/ld-2.7.so | grep strlen 0002f734 l O .data.rel.ro 00000004 max_capstrlen 00018ff0 l F .text 000000b8 strlen
Und doch hat das --extra-debuginfo-path
Argument keine Wirkung. Im Handbuch wird kurz auf diesen Schalter hingewiesen, aber dies sind praktisch alle Informationen, die ich dazu gefunden habe. Fehlt mir noch etwas?
Für die Aufzeichnung kann diese Maschine nicht mit dem Internet verbinden, so lassen apt
/ dpkg
kümmern Dinge ist leider nicht in Frage. /lib
und die meisten anderen Systemverzeichnisse sind auch schreibgeschützt (Mounted). Daher kann ich nicht einfach einen nicht entfernten Ersatz hinzufügen ld-2.7.so
(nicht, dass ich ein solches Risiko eingehen würde).
1 Antwort auf die Frage
Verwandte Probleme
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
6
Vollbild-Flash langsam in KDE 4
-
3
Pakete in einem seltsamen Zustand
-
8
Finden Sie, zu welchem Paket eine Datei in Ubuntu / Debian gehört?
-
2
Wie richte ich ein automatisches Login bei Debian (Lenny) ein?
-
1
Amaroks hört nach einem Song auf zu spielen
-
3
Amarok weigert sich, * .ogg-Dateien abzuspielen
-
2
Kopete, um mit GTalk zu arbeiten
-
4
Sendmail-Ersatz auf einem Debian-Heimcomputer
-
4
Wie finden Sie die Ubuntu-Version (Versionsnummer / -name) über die Befehlszeile?