你如何检查dbx中的核心文件?

时间:2011-02-11 16:47:28

标签: aix coredump dbx

我正在使用AIX并且有一个不断崩溃的进程。我从未检查过核心文件,如果可能的话,我想要一些指导。我正在使用dbx。我怎样才能(a)确保核心文件到达我想要的位置,以及(b)在崩溃之前查看进程的状态?

谢谢!

2 个答案:

答案 0 :(得分:4)

我可以通过一个运行,但也不确定调试核心。 我发现这些命令可能是要关注的命令。可能还有更多。

在dbx中运行核心后:

  1. 'where' - 显示堆栈
  2. 'up'或'down' - 移动框架然后你
  3. 'print var' - 显示变量
  4. 和'list'或'edit' - 将显示当前位置的文件信息
  5. 在“审核数据”下查看here帮助了我。

答案 1 :(得分:3)

核心文件在进程的当前工作目录中创建。查看getcwd(),使用chdir(设置。

  

dbx [-a ProcessID] [-B DebugFile] [-c CommandFile] [-I Directory] ​​[-E DebugEnvironment] [-p oldpath = newpath:... | pathfile] [-u] [-F] [-r] [-x] [-v] [-C CoreFile | ObjectFile [CoreFile]]

使用dbx /path/to/progname /path/to/corefile将程序加载到dbx中,然后开始查看堆栈跟踪(“where”命令等)。

如果未指定corefile dbx将自动加载名为“core”的匹配文件(如果它与加载的程序位于同一目录中(并且它们与签名匹配)。

阅读man page on dbx,它提供了您需要的所有调试命令。

另请注意,您的程序需要在启用调试符号的情况下进行编译(以后不再使用'strip'),以便堆栈跟踪最有用。如果没有调试符号,您将在堆栈跟踪中看到函数名称,但没有其他内容。