c - 用 /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。
解决方案
您使用的是什么操作系统?
通常,您应该执行此操作的方式是安装 debuginfo 包。大多数 Linux 发行版都拆分了 debuginfo,因此您可以安装剥离的二进制文件,但也可以选择安装单独的 debuginfo。gdb 和 Valgrind 等工具知道在哪里查找 debuginfo 文件,并会在需要时读取它们。
如果你这样做,那么你应该不需要安装未剥离的二进制文件。
推荐阅读
- php - 如何在 Laravel 中更新多对多关系中的特定值
- python - 删除 django 模板循环的最后一项的最后一个字符
- c# - 防御无数据
- javascript - 如何将数据从nodejs文件发送到html页面
- java - HTTPClient 在多线程环境中挂起或变慢
- java - 无法创建 Snowflake Java 函数
- npm - Vagrant 节点版本未在 VM 中更新
- xcode - 将 iOS 应用从 Cloudkit 开发转移到生产
- drupal-8 - 如何在 drupal 8 中覆盖 core misc js
- sql - 使用多个 AND 语句从 Postgres 表中选择随机行