【问题标题】:How to attache source code when using dbx to analyze an core dump使用 dbx 分析核心转储时如何附加源代码
【发布时间】:2014-01-11 12:22:52
【问题描述】:

我们有一个客户报告了 AIX 服务器崩溃,他们向我们提供了核心转储。 核心转储由发布库和可执行文件生成。

现在如果我使用dbx分析它,我无法得到行号。

有没有办法将源代码附加到 dbx?我可以使用调试信息重新编译库和可执行文件,然后将它们加载到 dbx,这样行吗?

或者我是否需要向客户提供我们的库和可执行文件的调试版本,让他们重现崩溃并将核心转储发送给您?

【问题讨论】:

    标签: aix coredump dbx


    【解决方案1】:

    核心文件需要与您尝试将 dbx 附加到的同一可执行文件匹配。如果您需要调试符号,则需要让客户运行调试版本(使用 -g 编译,未剥离)并将崩溃生成的核心发送给您。

    让 dbx 显示源代码是另一个步骤,see the -I option or "use" command 将 dbx 指向与您的调试版本相关的源文件。

    请注意,我经常发现在调试与发布版本中不会发生崩溃。有时会令人沮丧。

    如果您特别喜欢冒险,可以使用“where”的组合(显示当前函数和该函数内的偏移量)来显示汇编程序。从源文件生成汇编程序(来自 xlc 的 -S 选项),您可以非常接近导致问题的 C/C++ 语句。在尝试重新创建在生产中转储核心而没有适当的调试构建的东西时,我已经多次这样做了。

    祝你好运!

    【讨论】:

    • 还有一个问题:我们有一个可执行文件和几个库(.a 文件),如果库中发生崩溃,我们可以只部署该库的调试版本吗?我们是否也需要部署调试可执行文件?
    • 我问是因为我们无法重现它,它只发生在客户的环境中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2022-08-21
    • 2011-05-19
    • 2018-04-03
    相关资源
    最近更新 更多