2011-12-12 75 views
8

ulimit -c可用於設置RLIMIT_CORE,並限制進程可能生成的coredump的最大大小。任何較大的coredump都會被截斷到這個尺寸。什麼是截斷的核心堆?

用這樣一個截斷的coredump可以做什麼有用的事情嗎?也許在Linux x86-64以外的平臺上,或者使用非GDB的調試器?

如果沒有,爲什麼POSIX specify this behavior,而不是說,如果超過了RLIMIT_CORE,則將coredump截斷爲零字節?

+0

我不確定是否要在此處或在[unix.se]上發佈此信息。如果這更合適,我很樂意在那裏重新發布。 – daxelrod

回答

6

用這樣一個截斷的coredump可以做什麼有用的事情嗎?

是的,很多的東西。

截斷的核心轉儲通常包含堆棧段,因此通常可以使用命令wherethread apply all where。通常這是核心所需的一切。檢查局部變量和全局變量的命令也可能起作用。

檢查堆分配變量的命令可能適用於某些變量,但不一定適用於其他變量。儘管如此,很多總比沒有好。