linux core dump

Core dump: 在程序運行過程當中異常終止或崩潰,操做系統將當時的內存狀態記錄下來,保存在一個文件中。linux

其中會包含寄存器信息(包括程序指針,棧指針等),內存管理信息,操做系統狀態等信息。dom

linux 中默認忽略 Stop信號、Terminate信號、Ignore信號等,若是信號在默認狀況下,在下列幾種信號發生時ui

會產生core dump: SIGQUIT(quit from keyboard ), SIGILL(illegal instruction), SIGABRT(abort signal),
操作系統

SIGSEGV(invalid memory reference), SIGTRAP(trace/breakpoint trap)指針

ctrl+z 掛起進程 SIGTSTP信號(默認爲暫停進程)code

ctrl+c終止進程 SIGINT信號(默認爲終止進程)進程

ctrl+\ (默認SIGQUIT信號)產生core dump內存

打開core dump:it

在終端輸入 ulimit -c ,輸出爲0,說明默認是關閉core dump的內存管理

輸入 ulimit -c unlimited 開啓core dump功能,而且不限制core dump文件的大小,若是要限制文件大小,

將unlimited改爲須要的文件大小,單位爲blocks(KB)

以上命令支隊當前終端有效,若是永久有效,能夠修改/etc/security/limits.conf文件,

增長一行:

#<domain> <type> <item> <value>

     *               soft        core      unlimited

修改core保存文件的路徑

默認生在的core文件在可執行文件所在的目錄下,文件名爲core

經過修改/proc/sys/kernel/core_uses_pid文件能夠讓生成的core文件名是否自動加上pid號

如 echo 1> /proc/sys/kernel/core_uses_pid,生成的core文件名將會變成core.pid,其中pid表示進程的pid

經過修改 /proc/sys/kernel/core_pattern 來控制生成的core文件生成的路徑和保存格式

如用echo "/tmp/corefile-%e-%p-%t" > /proc/sys/kernel/core_pattern 設置成core-命令名-pid-時間戳


gdb調式

gdb program core 來查看core文件,其中program爲可執行程序名,core爲生成的core文件名。

相關文章
相關標籤/搜索