没有符号表信息

时间:2013-02-07 15:25:12

标签: linux gdb

我正在测试来自第三方的图书馆,它崩溃了。当我想看到崩溃的原因时,我的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

3 个答案:

答案 0 :(得分:3)

好吧,看起来它是gdb中的一个bug。

Centos 6在其存储库中预编译了 7.2-56.el6 版本。我更新了(通过编译源代码)到最新版本的gdb,现在它正在运行。

感谢大家的帮助。

答案 1 :(得分:2)

检查file /usr/local/lib/libtinySIP.so.0。如果它说剥离,请检查您的lib的构建过程。它可以手动调用strip来删除调试符号。

答案 2 :(得分:-3)

看来你的编译标志有冲突。我不是专家,但看起来你的-g标志(生成调试符号)与-O2标志(这是一个优化参数)混合在一起。

尝试仅使用-g并发布结果。