GDB生产??ubuntu上用于分段故障的符号



我正试图在Ubuntu服务器上使用gdb调试我的c++编程分配应用程序,因为它会产生分段错误。但是文件产生了??当我尝试bt时,它给了我无法读取的符号。

(gdb) bt
#0  0x00007f141956d277 in ?? ()
#1  0x00007ffc1a866bd0 in ?? ()
#2  0x000055e1f101d5e0 in ?? ()
#3  0x00007ffc1a866db0 in ?? ()
#4  0x000055e1f1433e70 in ?? ()
#5  0x00007ffc1a866bd0 in ?? ()
#6  0x000055e1f10224a9 in ?? ()
#7  0x000055e1f14341f8 in ?? ()
#8  0x00000001f14344d0 in ?? ()
#9  0x0000000000000000 in ?? ()

我一直在关注这个链接,它告诉我加载这些符号

symbol-file /path/to/my/binary
sharedlibrary

已找到sharedlibrary,但不存在符号文件路径。因此,它确实以某种方式更改了bt命令输出

(gdb) bt
#0  tcache_get (tc_idx=0) at malloc.c:2943
#1  _GI__libc_malloc (bytes=19) at malloc.c:3050
#2  0x000055e1f10224a9 in ?? ()
#3  0x000055e1f14341f8 in ?? ()
#4  0x00000001f14344d0 in ?? ()
#5  0x0000000000000000 in ?? ()

我仍然不理解这个bug。

现在,我不知道GDB没有这个symbol-file是什么问题,也不知道这是一个我不知道如何调试的编译问题,或者这对我来说已经足够调试了,但我在调试分段故障,它的故障排除要清楚得多。

当我搜索类似的案例时,所有的答案都只针对他们的案例,而不是如何处理这些错误的一般解决方案。我也想过安装或定位那个符号文件,但我不明白怎么做。

如果有人能帮我,我需要了解我的问题是什么,我应该如何解决

注意:核心转储是在/tmp中生成的,而不是在当前应用程序目录中

我一直在关注这个链接,它告诉我加载这些符号

不要关注此链接(这对您的用例来说是不必要的复杂(。

相反,这样做:

gdb /path/to/my/binary
(gdb) run 

当您的程序遇到SIGSEGV时,GDB将停止

(gdb) bt     # should produce meaningful output now.

最新更新