【问题标题】:gdb linux - segmentation fault no symbol table foundgdb linux - 分段错误未找到符号表
【发布时间】:2018-10-23 03:57:43
【问题描述】:

我正在使用二进制文件和发生核心转储的 Linux 机器上的核心文件使用 gdb 调试核心转储。但是我得到 No symbol table info available for a specific thread number 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. 信息线程的输出:* 1 线程 0x7f799659f700 (LWP 12275) 0x00007f799cead4b0 in __tls_get_addr () from /lib64/ld-linux-x86-64.so.2.Based based on the kernel logs segmentation fault occurred due to errno 6. kernel: BSG.exe [12275]: segfault at 7f799649fff8 ip 00007f799cead4b0 ld-2.12.so [7f799ce9c000+20000] 中的 sp 00007f79964a0000 错误 6

标签: linux gdb


【解决方案1】:

我没有符号表

“无符号表”是一条红鲱鱼;和你的问题无关。

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

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

看起来您在 9 或 10 级任意截断输出,如果您允许,输出将“永远”继续。

如果上面的猜测是正确的,你有一个堆栈溢出,因为你的SingleTonHandler::Handler 不断地重新进入自己。您还应该能够通过让回溯足够长的时间来找出原始异常。或者,backtrace -20 应该显示最外层(最旧)的 20 帧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多