【发布时间】:2013-02-07 15:25:11
【问题描述】:
我正在测试来自第三方的库,但它崩溃了。当我想查看崩溃的原因时,我的 gdb 告诉我没有可用的调试符号
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb53ffb70 (LWP 3722)]
0x00172a89 in tsip_transac_send () from /usr/local/lib/libtinySIP.so.0
我在 gdb 控制台上发出 bt full 并得到一系列如下所示的行
#0 0x00172a89 in tsip_transac_send () from /usr/local/lib/libtinySIP.so.0
No symbol table info available
我在检查 Makefile 中的 CFLAGS 后重新编译了库。这些值一直都很好,但我还是重新编译了它
CFLAGS = -g -O2
我以同样的运气再次运行测试,共享库没有调试符号。
我在这里错过了什么?
我使用的是 Centos 6.0,之前我在 Opensuse 中安装了该库,但我没有遇到这个问题。这可能与我的 Centos 安装有关。
以防万一,我正在测试 Doubango 的 webrtc2sip 库。
编辑: 调试符号正在正确加载
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x002fb830 0x0031339f Yes (*) /lib/ld-linux.so.2
0x00115040 0x00120028 Yes /usr/local/lib/libtinySAK.so.0
0x00133f30 0x0018b378 Yes /usr/local/lib/libtinySIP.so.0
0x001d8ac0 0x00201b98 Yes /usr/local/lib/libtinyNET.so.0
0x00215dd0 0x0023f638 Yes /usr/local/lib/libtinyDAV.so.0
0x0024eec0 0x00261728 Yes /usr/local/lib/libtinyMEDIA.so.0
0x0026bb00 0x002774d8 Yes /usr/local/lib/libtinyHTTP.so.0
0x002ae340 0x002b0358 Yes /usr/local/lib/libtinyXCAP.so.0
0x002b3990 0x002b8d18 Yes /usr/local/lib/libtinySMS.so.0
0x002be630 0x002c9388 Yes /usr/local/lib/libtinyMSRP.so.0
0x002de240 0x002e8e18 Yes /usr/local/lib/libtinySDP.so.0
0x00323060 0x00345778 Yes /usr/local/lib/libtinyRTP.so.0
【问题讨论】:
-
我建议你在库上运行
file,看看它在安装时是否被剥离。 -
/usr/local/lib/libtinySIP.so.0.0.0:ELF 32 位 LSB 共享对象,Intel 80386,版本 1 (SYSV),动态链接,未剥离
-
这篇文章可能会有所帮助。 -> [GDB 说“没有符号表”,但 nm 显示文件有调试符号][1] [1]: stackoverflow.com/questions/19229882/…