2013年8月15日 星期四

Core dump (核心轉儲)

核心檔案(core file),也稱核心轉儲(core dump),是作業系統在行程收到某些信號而終止執行時,將此時行程空間的內容以及有關行程狀態的其他訊息寫出到一個磁碟檔案。

核心檔案一詞源自於磁蕊記憶體 (core memory)

啟用core dump

大多數的Linux發行版通常會將core dump預設為關閉,此時要用ulimit命令可以查看目前的core dump功能是否有效。

$ulimit -c
0

-c 選項代表core dump文件的大小限制,上面例子限制為0,表示core dump是被關掉的。

開啟core dump

$ulimit -c unlimited

如此一來就設定為不限制core dump的大小,當發生問題的時候就會產生core file。

$./a.out
Segmentation fault (core dumped)

當下目錄會產生core file

$file core*
core.7561: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, format './a.out'

要用gdb除錯產生的core file

$gdb -c core.7561 ./a.out
GNU gdb Fedora (6.8-17.fc9)
...
Core was generated by './a.out'.
Program terminated with signal 11, Segmentation fault.
[New process 7577]
#0 0x000000000040048c in main () at segfault.c:6
6                     *a=0x1;



參考資料:
Book:Debug Hacks 深入除錯的技術和工具
Wiki :核心檔案


沒有留言:

張貼留言