查找导致核心转储文件的程序

Des*_*ume 21 linux debugging ubuntu coredump

我最近经历了激烈的程序/包安装,所以我无法确定哪些新安装的程序(或旧程序)导致core我的主文件夹中出现文件.它是一个服务器,所以我最好找出机器上任何可能的不稳定来源.

Ben*_*enj 37

您只需使用该file程序来识别它们:

例如

# file /var/core/core
/var/core/core:     ELF 64-bit MSB core file SPARCV9 Version 1, from 'crs_stat.bin'
Run Code Online (Sandbox Code Playgroud)

  • @jsegal:很好找,但我需要`字符串核心| grep ^/| 尾部-1`当`find`告诉我:'太多程序标题部分`. (3认同)
  • 有时我有核心文件,无论出于什么原因"文件"都无法识别 - 在这些情况下,核心文件中字符串输出的最后一行通常包含可执行文件的路径这一事实可以提供帮助.例如"strings/path/to/corefile | tail -n 1"经常有效,或者查看最后几行. (2认同)

rho*_*mes 6

通常在核心文件上使用文件程序会显示错误的可执行文件,正如@Benj 在接受的答案中所解释的(来自 Benj 答案的代码):

# file /var/core/core
/var/core/core:     ELF 64-bit MSB core file SPARCV9 Version 1, from 'crs_stat.bin'
Run Code Online (Sandbox Code Playgroud)

但是,有时您可能会抱怨“程序头部分太多”:

core.some-lib.nnnn.nnnn: ELF 64-bit LSB  core file x86-64, version 1 (SYSV), too many program header sections (1850)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以尝试一些替代方案:

  • 跟踪核心文件的最后几个字符串(应用程序对我来说大约是 25 回): strings core.some-lib.nnnn.nnnn | tail -50
  • 使用 gdb 本身:gdb -c core.some-lib.nnnn.nnnn这通常会告诉你这样的事情:Core was generated by '/usr/local/bin/some-executable'