gdb给出一个函数名,后跟一个数字而不是文件和行号

时间:2015-05-12 05:38:22

标签: c debugging segmentation-fault gdb

我的程序中存在分段错误,并且我使用gdb来识别它发生的位置。但是,我无法看到发生错误的明确行号。

以下是我输出的屏幕截图。

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 20065168 (LWP 4645)]
0x007e537f in _int_free () from /lib/libc.so.6
(gdb) backtrace
#0  0x007e537f in _int_free () from /lib/libc.so.6
#1  0x007e90f0 in free () from /lib/libc.so.6
#2  0x080d9e67 in CRYPTO_free ()
#3  0xbfd15f7c in ?? ()
#4  0xbfd16108 in ?? ()
#5  0x08070b3e in function_random.19532 ()
#6  0x00000001 in ?? ()
#7  0x00000000 in ?? ()
(gdb)

frame 5是我写过的一段代码,但我不太明白这意味着什么。

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:4)

在您的情况下,最有可能的是,二进制文件中不存在调试符号。这就是为什么gdb无法读取调试信息并显示它们。

在启用调试的情况下重新编译代码。

示例:对于gcc,请使用-g选项。