【问题标题】:Linux: Load debug symbols on CentOS v7Linux:在 CentOS v7 上加载调试符号
【发布时间】:2020-11-07 18:23:53
【问题描述】:

在执行cdlssudo rebootmake 等基本命令时,有许多系统会出现分段错误。这不会一直发生,而且会出现断断续续的情况,物理重启会在一段时间内有所帮助。我们能够在执行sudo true 时导致分段错误。附加 gdb 并获取回溯产量:

Program received signal SIGSEGV, Segmentation fault.
0x00007f71c45a98a1 in sudo_sss_setdefs () from /usr/libexec/sudo/sudoers.so
(gdb) bt
#0  0x00007f71c45a98a1 in sudo_sss_setdefs () from /usr/libexec/sudo/sudoers.so
#1  0x00007f71c45a1ca4 in sudoers_policy_init () from /usr/libexec/sudo/sudoers.so
#2  0x00007f71c459bb37 in sudoers_policy_open () from /usr/libexec/sudo/sudoers.so
#3  0x000055f13bdbd55b in main () 

我的问题是如何将调试符号加载到 gdb 中?如果我记得,在 Windows 上,MS 会发布调试符号供开发人员使用。我不确定是否为 Linux 发行版发布了调试符号,并且可能与发行版相关。

第二个问题是,除了使用 gdb 之外,调试分段错误的最佳方法是什么?谢谢。

【问题讨论】:

    标签: linux centos segmentation-fault gdb


    【解决方案1】:

    如何将调试符号加载到 gdb 中?

    您安装了sudo-dbg 或类似的包(也就是说,如果程序 X 来自包 foo,那么 X 的调试符号将在 foo-dbg(或类似名称的包)中。

    在 Windows 上,MS 会发布调试符号供开发人员使用。

    大多数 Linux 发行版都包含 *-dbg 包。

    除了使用 gdb 之外,调试分段错误的最佳方法是什么?

    您描述的症状(不同的命令崩溃,重启后崩溃消失一段时间)表明这是您系统上的 RAM 问题。

    如果您的 RAM 出现故障,则调试单个程序不太可能产生任何有用的结果。相反,使用memtest86 来彻底锻炼你的记忆力。

    【讨论】:

    • 感谢memtest 的信息和建议。花了一些时间,但发现一篇关于调试符号 here 的 RedHat 文章,他们称之为 debuginfo
    猜你喜欢
    • 1970-01-01
    • 2012-04-04
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多