分析redhat 7.0核心转储文件

分析redhat 7.0核心转储文件

我们有一个进程不断生成核心转储文件,但甚至不确定是哪个进程。我已按照说明使用崩溃实用程序来分析核心转储文件。我必须安装一个新的存储库并安装崩溃。现在它正在运行我得到这个:

crash: /usr/lib/debug/lib/modules/3.10.0-229.14.1.el7.x86_64/vmlinux and /home/user/d336599/core.26061 do not match!

知道解决方案吗?

答案1

如果您file在核心转储上使用该命令,它应该能够告诉您生成核心转储文件的可执行文件的名称。

然后gdb <executable file> <core dump file>将启动gdb,并且bt命令gdb将产生程序崩溃的回溯。

但是,如果调试符号已从可执行文件中删除,您会发现回溯不会提供太多信息。在这种情况下,您可能必须为该可执行文件找到一个单独的调试符号表文件(版本必须完全匹配)并将其添加-s <symbol table file>到 gdb 命令调用中。

如果核心转储被截断,您很可能会耗尽磁盘空间(正如您在评论中所述)。核心文件名/home/user/d336599/core.26061表明您可能正在使用 RHEL7 sysctl 默认值kernel.core_pattern = "core"kernel.core_uses_pid = 1.通过在 sysctl 中指定绝对路径名kernel.core_pattern,您可以将核心转储重定向到另一个具有更多空间的磁盘。只需记住确保该目录对于拥有转储核心的程序的用户是可写的。

man 5 core有关如何kernel.core_pattern指定生成核心转储文件的位置以及如何命名它们的更多信息。

相关内容