我在 AIX 上工作并且有一个不断崩溃的进程。我从来没有检查过核心文件,如果可能的话,我希望得到一些指导。我正在使用 dbx。我如何(a)确保核心文件到达我希望它去的地方,以及(b)在进程崩溃之前查看进程的状态?
谢谢!
我可以逐步完成运行,但也不确定是否要调试内核。我发现这些命令可能是需要关注的。可能还有更多。
在 dbx 中运行核心后:
在“检查数据”下查看这里帮助了我。
核心文件是在进程的当前工作目录中创建的。用 进行检查getcwd()
,用chdir(
) 设置。
dbx [ -a ProcessID ] [ -B DebugFile ] [ -c CommandFile ] [ -I Directory ] [ -E DebugEnvironment ] [ -p oldpath=newpath:...| 路径文件 ] [ -u ] [ -F ] [ -r ] [ -x ] [ -v ] [ -C CoreFile | 对象文件[核心文件]]
将您的程序加载到 dbx 中dbx /path/to/progname /path/to/corefile
,您就可以开始查看堆栈跟踪(“where”命令等)。
如果您不指定corefile
dbx 将自动加载一个名为“core”的匹配文件,如果它与加载的程序位于同一目录中(并且它们匹配签名)。
阅读dbx 上的手册页,它提供了您需要的所有调试命令。
另请注意,您的程序将需要在启用调试符号的情况下进行编译(而不是稍后“剥离”),以便堆栈跟踪最有用。如果没有调试符号,您将在堆栈跟踪中看到函数名称,但仅此而已。