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

gdb giving a function name followed by a number instead of file and line number

我的程序中有一个分段错误,我正在使用 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是我写的那段代码,但是不太明白是什么意思

有人可以解释一下吗?

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

重新编译代码,启用调试。

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