我的程序中存在分段错误,并且我使用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
是我写过的一段代码,但我不太明白这意味着什么。
有人可以解释一下吗?
答案 0 :(得分:4)
在您的情况下,最有可能的是,二进制文件中不存在调试符号。这就是为什么gdb
无法读取调试信息并显示它们。
在启用调试的情况下重新编译代码。
示例:对于gcc
,请使用-g
选项。