gdb linux-分段错误未找到符号表

时间:2018-10-23 03:57:44

标签: linux gdb

我正在使用二进制文件和发生核心转储的Linux机器上的核心文件在gdb上调试核心转储。但是我得到的是没有特定线程号1可用的符号表信息。对于其余的线程,我是获取符号表。

(gdb) t 1
[Switching to thread 1 (Thread 0x7f799659f700 (LWP 12275))]#0  0x00007f799cead4b0 in __tls_get_addr () from /lib64/ld-linux-x86-64.so.2
(gdb) frame 0
#0  0x00007f799cead4b0 in __tls_get_addr () from /lib64/ld-linux-x86-64.so.2
(gdb) bt full
#0  0x00007f799cead4b0 in __tls_get_addr () from /lib64/ld-linux-x86-64.so.2
No symbol table info available.
#1  0x00007f799c3d5ddc in __cxa_get_globals () from /usr/lib64/libstdc++.so.6
No symbol table info available.
#2  0x00007f799c3d6c56 in __cxa_rethrow () from /usr/lib64/libstdc++.so.6
No symbol table info available.
#3  0x0000000000413f57 in ExceptionHandler::SingleTonHandler::Handler ()
    at /fgw_dev/dev/source/BSG/include/bsg_exception.h:19
No locals.
#4  0x00007f799c3d6be6 in ?? () from /usr/lib64/libstdc++.so.6
No symbol table info available.
#5  0x00007f799c3d6c13 in std::terminate() () from /usr/lib64/libstdc++.so.6
No symbol table info available.
#6  0x00007f799c3d6c96 in __cxa_rethrow () from /usr/lib64/libstdc++.so.6
No symbol table info available.
#7  0x0000000000413f57 in ExceptionHandler::SingleTonHandler::Handler ()
    at /fgw_dev/dev/source/BSG/include/bsg_exception.h:19
No locals.
#8  0x00007f799c3d6be6 in ?? () from /usr/lib64/libstdc++.so.6
No symbol table info available.
#9  0x00007f799c3d6c13 in std::terminate() () from /usr/lib64/libstdc++.so.6
No symbol table info available.

基于核心bt,看起来好像是运行时异常导致程序终止,因为自从没有参数调用throw之后就没有捕获到异常,因此程序被终止并转储了内核,但是我们不知道根导致此异常的原因。请让我知道如何调试此核心文件,因为它没有为此特定线程加载符号。

(gdb) bt
#0  0x00007f799cead4b0 in __tls_get_addr () from /lib64/ld-linux-x86-64.so.2
#1  0x00007f799c3d5ddc in __cxa_get_globals () from /usr/lib64/libstdc++.so.6
#2  0x00007f799c3d6c56 in __cxa_rethrow () from /usr/lib64/libstdc++.so.6
#3  0x0000000000413f57 in ExceptionHandler::SingleTonHandler::Handler ()
    at /fgw_dev/dev/source/BSG/include/bsg_exception.h:19
#4  0x00007f799c3d6be6 in ?? () from /usr/lib64/libstdc++.so.6
#5  0x00007f799c3d6c13 in std::terminate() () from /usr/lib64/libstdc++.so.6
#6  0x00007f799c3d6c96 in __cxa_rethrow () from /usr/lib64/libstdc++.so.6
#7  0x0000000000413f57 in ExceptionHandler::SingleTonHandler::Handler ()
    at /fgw_dev/dev/source/BSG/include/bsg_exception.h:19
#8  0x00007f799c3d6be6 in ?? () from /usr/lib64/libstdc++.so.6
#9  0x00007f799c3d6c13 in std::terminate() () from /usr/lib64/libstdc++.so.6
#10 0x00007f799c3d6c96 in __cxa_rethrow () from /usr/lib64/libstdc++.so.6
#11 0x0000000000413f57 in ExceptionHandler::SingleTonHandler::Handler ()

谢谢

1 个答案:

答案 0 :(得分:0)

  

我没有符号表

“无符号表”是红色鲱鱼;与您的问题无关。

  

但是我们不知道导致此异常的根本原因

您是否显示了backtrace命令的 entire 输出?

您好像在任意截断9或10级的输出,并且如果您允许,输出将一直持续下去。

如果以上猜测正确无误,则可能是堆栈溢出,因为SingleTonHandler::Handler不断地重新进入自身。通过让backtrace走足够长的时间,您还应该能够找出原始异常。另外,backtrace -20应该向您显示最外面(最旧)的20帧。