gdb调试没有符号表被读取_c – GDB说“没有符号表”,但nm显示文件有调试符号

我正在尝试使用GDB调试一个简单的C项目,但无论我如何编译它,GDB似乎都找不到该程序的调试符号.

当我将程序加载到GDB时,它声称已成功读取符号,因为它打印

Reading symbols from /home/edward/...done.

但是,当我运行程序时,打破分段错误,并输入信息本地,它说

No symbol table info available.

另外,bt表明执行在我写的函数(不是系统或库调用)中停止,但是没有行号信息,只有原始内存地址.

为什么GDB不能找到或使用之前成功读取的符号?我在我正在运行的二进制文件上运行nm和objdump,它们都显示了.debug_info,.debug_line等部分,因此该文件确实包含调试符号.

我通常使用Makefile编译,设置以下标志:

CFLAGS = -mno-red-zone -fno-omit-frame-pointer -ggdb -O0 -I. -Wdeclaration-after-statement -Wall

当我调用gcc时,我可以看到它被使用.但是,我尝试更改为-g,并通过在简单的测试文件上调用gcc -g -O0手动编译,结果仍然相同:二进制文件包含调试符号,GDB读取它们,但调用任何GDB命令都会产生一条消息,指出调试信息不​​可用.

更新

我正在运行Ubuntu 12.04,我的GDB版本是7.4,而我的GCC版本是4.8.1.

如果我在GDB中设置投诉10000然后加载文件,它会打印以下投诉:

Reading symbols from /home/edward//minithread...

DW_AT_low_pc 0x400690 is not < DW_AT_high_pc 0x33 for DIE at 0x205 [in module /home/edward//minithread]

...DW_AT_low_pc 0x4006c3 is not < DW_AT_high_pc 0xa9 for DIE at 0x235 [in module /home/edward//minithread]

...DW_AT_low_pc 0x40076c is not < DW_AT_high_pc 0xad for DIE at 0x287 [in module /home/edward//minithread]

...DW_AT_low_pc 0x400819 is not < DW_AT_high_pc 0xe7 for DIE at 0x2d3 [in module /home/edward//minithread]

...DW_AT_low_pc 0x400900 is not < DW_AT_high_pc 0x4f for DIE at 0x345 [in module /home/edward//minithread]

...DW_AT_low_pc 0x40094f is not < DW_AT_high_pc 0x55 for DIE at 0x39d [in module /home/edward//minithread]

...DW_AT_low_pc 0x4009a4 is not < DW_AT_high_pc 0x38 for DIE at 0x3e7 [in module /home/edward//minithread]

...DW_AT_low_pc 0x4009dc is not < DW_AT_high_pc 0x43 for DIE at 0x433 [in module /home/edward//minithread]

...DW_AT_low_pc 0x400a20 is not < DW_AT_high_pc 0x2e for DIE at 0x56c [in module /home/edward//minithread]

...DW_AT_low_pc 0x400a4e is not < DW_AT_high_pc 0x2e for DIE at 0x5aa [in module /home/edward//minithread]

...DW_AT_low_pc 0x400a7c is not < DW_AT_high_pc 0x29 for DIE at 0x5d4 [in module /home/edward//minithread]

...DW_AT_low_pc 0x400aa5 is not < DW_AT_high_pc 0x49 for DIE at 0x620 [in module /home/edward//minithread]

...DW_AT_low_pc 0x400aee is not < DW_AT_high_pc 0xca for DIE at 0x66c [in module /home/edward//minithread]

...DW_AT_low_pc 0x400bb8 is not < DW_AT_high_pc 0x7bb for DIE at 0x6f0 [in module /home/edward//minithread]...done.

这些错误是导致问题的原因吗?他们是说我的GDB是“错误的”版本吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值