轉自:http://www.cppblog.com/kongque/archive/2011/03/07/141262.aspx
core dump的概念:
A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other key pieces of program state are
usually dumped at the same time, including the processor registers, which may include the program counter and stack pointer, memory management information, and other processor and operating system flags and information. The name comes from the once-standard
memory technology core memory. Core dumps are often used to diagnose or debug errors in computer programs.
On many operating systems, a fatal error in a program automatically triggers a core dump, and by extension the phrase "to dump core" has come to mean, in many cases, any fatal error, regardless of whether a record of the program
memory is created.
在linux平台下,設定core dump檔案產生的方法:
1) 在終端中輸入ulimit -c 如果結果為0,說明當程式崩潰時,系統並不能產生core dump。
2) 使用ulimit -c unlimited命令,開啟core dump功能,並且不限制產生core dump檔案的大小。如果需要限制,加數字限制即可。ulimit - c 1024
3) 預設情況下,core dump產生的檔案名稱為core,而且就在程式目前的目錄下。新的core會覆蓋已存在的core。通過修改/proc/sys/kernel/core_uses_pid檔案,可以將進程的pid作為作為副檔名,產生的core檔案格式為core.xxx,其中xxx即為pid
4) 通過修改/proc/sys/kernel/core_pattern可以控制core檔案儲存位置和檔案格式。例如:將所有的core檔案產生到/corefile目錄下,檔案名稱的格式為core-命令名-pid-時間戳記. echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern