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 ?? ()

我正在关注此link,它告诉我加载这些符号

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 ?? ()

我仍然不了解该错误。

现在,我不知道这是GDB的问题,因为它没有symbol-file,或者是编译问题,我不知道该怎么做或不足以进行调试,但是我一直在关注{ {3}},故障排除更加清晰。

当我搜索相似的案例时,所有答案仅针对其案例,而不是如何处理此类错误的一般解决方案。我还考虑过安装或定位该符号文件,但我不知道如何。

如果有人可以帮助我,我需要了解我的问题以及如何解决。

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

解决方法

我正在跟踪此链接,它告诉我加载这些符号

不要点击此链接(对于您的用例而言,它不必要地复杂)。

相反,请执行以下操作:

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

...当您的程序遇到SIGSEGV

时,GDB将停止
(gdb) bt     # should produce meaningful output now.

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...