我正在使用AIX并且有一个不断崩溃的进程。我从未检查过核心文件,如果可能的话,我想要一些指导。我正在使用dbx。我怎样才能(a)确保核心文件到达我想要的位置,以及(b)在崩溃之前查看进程的状态?
谢谢!
答案 0 :(得分:4)
我可以通过一个运行,但也不确定调试核心。 我发现这些命令可能是要关注的命令。可能还有更多。
在dbx中运行核心后:
在“审核数据”下查看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'),以便堆栈跟踪最有用。如果没有调试符号,您将在堆栈跟踪中看到函数名称,但没有其他内容。