0

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

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

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

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

4

1 回答 1

0

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

让 dbx 显示源是另一个步骤,请参阅 -I 选项或“使用”命令将 dbx 指向与您的调试版本相关的源文件。

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

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

祝你好运!

于 2013-12-23T20:56:36.433 回答