2012-11-09 82 views
19

最近我一直在經歷激烈的程序/軟件包安裝,因此我無法確定哪些新安裝的程序(或舊程序)導致出現core文件在我的家庭文件夾中。這是一臺服務器,所以我最好找出機器上任何可能的不穩定源。查找哪個程序導致了核心轉儲文件

+1

在FreeBSD上,這對我有用,'dmesg |尾巴-n 20' – SIFE

+0

@SIFE,如果它最近發生,肯定會起作用。 – Benj

+0

@Benj我忘了說。 – SIFE

回答

30

您可以簡單地使用file程序,以確定他們:

# file /var/core/core 
/var/core/core:  ELF 64-bit MSB core file SPARCV9 Version 1, from 'crs_stat.bin' 
+2

有時我有核心文件,無論出於什麼原因「文件」無法識別 - 在這些情況下,核心文件中字符串輸出的最後一行通常包含可執行文件的路徑可能會有所幫助。例如「strings/path/to/corefile | tail -n 1」通常有效,或者查看最後幾行。 – jsegal

+3

@jsegal:很好找,但我需要'strings core | grep ^/|尾部-1'當'find'告訴我:'節目頭段太多'。 – Tino

0

,你可以瀏覽到core.pid是和運行gdb的核心core.pid

0

目錄通常在覈心文件上使用文件程序會顯示錯誤的可執行文件,如@Benj在接受的答案(Benj的答案中的代碼)中所解釋的那樣:

# file /var/core/core 
/var/core/core:  ELF 64-bit MSB core file SPARCV9 Version 1, from 'crs_stat.bin' 

但是,有時候你也許會得到一個「太多的程序頭段」投訴:

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

在這種情況下,你可以嘗試一些替代方案:

  • 尾部的最後幾個字符串核心文件(該應用程序是爲我約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'