У меня была похожая проблема, и добавление --allow-mismatched-debuginfo=yes
параметра в valgrind решило проблему.
Valgrind не может найти символы отладки, даже с --extra-debuginfo-path
Я пытаюсь установить Valgrind на встроенную систему PowerPC на основе Debian. Мне удалось успешно скомпилировать его, но теперь он жалуется, что не может найти отладочную информацию. Я поместил неразделенные копии соответствующих общих объектов в файловую систему и сообщил Valgrind об этом каталоге, но он все еще не работает.
Призвание:
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.
Файл-нарушитель ld.so.1
находится в /lib
, а мои неотрезанные копии находятся в отдельном каталоге:
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
Мои неотрезанные копии, libc6-dbg_2.7-10ubuntu3_powerpc.deb
похоже, совместимы:
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
И если я понимаю, как это objdump
работает, кажется, что «функция, которая должна быть перенаправлена», упомянутая Valgrind, действительно имеет запись в отладочной копии:
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
И все же --extra-debuginfo-path
аргумент не имеет никакого эффекта. В руководстве есть краткое упоминание об этом переключателе, но это практически вся информация, которую я смог найти по этому поводу. Я что-то упускаю?
Для справки, эта машина не может подключиться к Интернету, так что об уходе apt
/ dpkg
заботе о вещах, к сожалению, не может быть и речи. /lib
и большинство других системных каталогов также смонтированы только для чтения, так что я не могу просто вставить необработанную замену ld-2.7.so
(не то, чтобы я пошел на такой риск).
1 ответ на вопрос
Похожие вопросы
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
6
Полноэкранная медленная вспышка в KDE 4
-
3
Пакеты в странном состоянии
-
-
8
Найти, к какому пакету принадлежит файл в Ubuntu / Debian?
-
2
Как настроить автоматический вход в систему в Debian (lenny)?
-
1
Amaroks перестает играть после одной песни
-
3
Amarok отказывается проигрывать файлы * .ogg
-
2
Kopete для работы с GTalk
-
4
Замена Sendmail на домашнем компьютере с Debian
-
4
Как найти версию Ubuntu (номер / имя релиза) из командной строки?