【问题标题】:Effects of replacing stripped libraries with unstripped libraries in /usr/lib and /lib path in linux for running valgrindlinux 中 /usr/lib 和 /lib 路径中的未剥离库替换剥离库以运行 valgrind 的效果
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 2012-12-26
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2023-03-02
    相关资源
    最近更新 更多