linux - 如何使用共享对象的调试版本

标签 linux shared-libraries dynamic-linking

我必须使用共享库的调试版本(特别是通过 apt-get install libpcap0.8-dbg 在 Ubuntu 中安装的 libpcap)...我构建我的可执行文件并链接到它并且所有工作(使用 ldd 验证)......但是当我运行可执行文件时我得到一个段错误......动态链接器无法加载库。使用 objdump 我看到 Dynamic section 是空的:

$objdump -p libpcap.so.1.1.1
...
Dynamic section:

$

我认为在 ELF 共享对象中,Dynamic section 的一些字段是强制性的……那么,为什么这个部分是空的?也许有不同的方法可以正确加载它?

最佳答案

老实说我不使用 Ubuntu,但 AFAIK 调试包不包含完整版本的库或二进制文件,只是从中删除了调试信息。这些只是用 eu-strip 或类似工具切出的部分。你不应该链接到他们。事实上,根本不需要重新链接您的应用程序。如果工具本身无法做到这一点,您应该只指示 gdb、valgrind 或其他调试信息使用者在实际调试之前阅读它们,仅此而已。

关于linux - 如何使用共享对象的调试版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13419906/

相关文章:

c++ - GLIBC_2.18 未找到,但在本地构建中

linux - apache2 配置测试失败。段错误(核心已转储)操作 'configtest' 失败

android - Debian 8.3 Jessie 64 位上的 AAPT 错误

java - 为什么我无法在运行 JAR 之前加载所需的库?

linux - 如何设置一个.so库搜索其他.so库的路径?

Python ctypes 和动态链接

linux - gcc 4.8.2 没有可识别的调试信息

linux - 用于进程监控的 Shell 脚本

c++ - 如何使用 dlmopen 在不同线程中打开多个共享库?

linux - GDB如何执行共享库的基地址[ info sharedlibrary 命令的内部结构]