我们有一个进程一直在生成一个核心转储文件,但甚至不确定是哪个进程。我按照指示使用崩溃实用程序来分析核心转储文件。我不得不安装一个新的回购和安装崩溃。现在它在运行,我明白了:
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!
知道解决办法吗?
发布于 2019-11-11 08:15:41
如果在核心转储上使用file命令,它应该能够告诉您生成核心转储文件的可执行文件的名称。
然后gdb <executable file> <core dump file>将启动gdb,gdb中的bt命令将产生程序崩溃的回溯。
但是,如果调试符号已从可执行文件中删除,您将发现回溯跟踪不会提供很好的信息。在这种情况下,您可能需要为该可执行文件找到一个单独的调试符号表文件(版本必须完全匹配)并将-s <symbol table file>添加到gdb命令调用中。
如果核心转储被截断,那么您很可能会耗尽磁盘空间(如您在注释中所述)。核心文件名/home/user/d336599/core.26061表示您可能在使用RHEL7 sysctl默认值kernel.core_pattern = "core"和kernel.core_uses_pid = 1。通过在kernel.core_pattern sysctl中指定一个绝对路径名,您可以将核心转储重定向到另一个具有更多空间的磁盘。请记住,要确保目录对于拥有转储内核的程序的用户来说是可写的。
有关如何使用man 5 core指定将在何处生成核心转储文件以及如何命名它们的更多信息,请参见kernel.core_pattern。
https://unix.stackexchange.com/questions/551466
复制相似问题