首页 > 解决方案 > 用 /usr/lib 和 /lib 路径中未剥离的库替换剥离的库以运行 valgrind 的效果

问题描述

我在/usr/lib路径(已剥离)中有以下库,需要用未剥离的类型替换。

/usr/lib/libdbus-1.so.3.14.7
/usr/lib/liblog4c.so.3.3.0
/usr/lib/libnetsnmp.so.40.0.0
/lib/ld-2.24.so

由于我需要为我的一个进程(例如:snmp 代理进程)运行valgrind,因此拥有带有调试符号的库将有助于识别文件位置、函数名称信息。

/proc/$pid/maps文件中发现,除了 snmp 代理进程之外,还有一些其他进程也在使用这些列出的库。那么当我用同一路径中的未剥离库替换现有的剥离库时,这些进程会发生什么。

或者

如何在不干扰使用感兴趣库的其他进程的情况下运行 valgrind。

标签: clinuxdebuggingshared-librariesvalgrind

解决方案


您使用的是什么操作系统?

通常,您应该执行此操作的方式是安装 debuginfo 包。大多数 Linux 发行版都拆分了 debuginfo,因此您可以安装剥离的二进制文件,但也可以选择安装单独的 debuginfo。gdb 和 Valgrind 等工具知道在哪里查找 debuginfo 文件,并会在需要时读取它们。

如果你这样做,那么你应该不需要安装未剥离的二进制文件。


推荐阅读