【发布时间】:2021-06-30 12:11:33
【问题描述】:
我在 /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 agent 进程)运行 valgrind,因此使用带有调试符号的库将有助于识别文件位置、函数名信息。
从/proc/$pid/maps文件发现,除了snmp代理进程,还有一些其他进程也在使用这些列出的库。那么,当我将现有的已剥离库替换为同一路径中未剥离的库时,这些进程会发生什么。
或
如何在不干扰其他使用感兴趣的库的进程的情况下运行 valgrind。
【问题讨论】:
-
我不确定与
ld-*.so打交道是否需要特殊处理,但对于其他人来说,这听起来更像是LD_PRELOAD的工作 -
@Frank - 任何可使用的示例
LD_PRELOAD。替换未剥离的库时其他进程是否发生任何崩溃。 -
这是一个简单的例子:stackoverflow.com/a/426260/4442671,不,其他进程仍然使用系统的库并且不受影响。
-
@Frank- 所以我必须将未剥离的库放在不同的路径中,并在 LD_PRELOAD 环境变量中引用它。另外我有多个库,所以对于这个link 是否合适?
标签: c linux debugging shared-libraries valgrind