我有一個程序有一個相當大的內存佔用,大約30GB,核心轉儲。核心轉儲文件出現然後消失
當程序正在轉儲(頂部顯示爲D - Defunct)時,轉儲文件是可見和可讀的。它位於預期的目錄中,具有預期的文件名格式。一切都在本地磁盤上。我甚至可以在gdb中加載文件。顯然,轉儲需要幾分鐘的時間處理這個大小的進程。
該文件最多可達13GB,然後進程退出......核心文件消失!噗。
平臺:紅帽EL6(2.6.32-220.4.2.el6.x86_64)
系統足夠的空間的文件,500GB以上免費。
$ df .
Filesystem 1K-blocks Used Available Use% Mounted on
blahblahblah 834006872 270024424 521617316 35% /data
的ulimit沒有顯示任何適用的限制:
$ ulimit -a
core file size (blocks, -c) unlimited
file size (blocks, -f) unlimited
<snipped>
編輯:更小的核心轉儲不會消失。包括這個相同的程序。這似乎是特定於巨大的核心轉儲。
tune2fs 1.41.12 (17-May-2010)
<snip>
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 1020
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
<snip>
你有程序的源代碼嗎? –
@Basile不知道爲什麼這是相關的。無論如何,來源將是巨大的。 – Underhill
Underhill,爲什麼不在gdb下運行該程序並運行,或者在運行時連接它。當程序得到SIGSEGV時,gdb會得到它,你將能夠在不需要保存coredump的情況下調試程序。 – osgx