事實上,並不是只有sigsegv訊號產生coredump,還有下面一些訊號也產生:
sigfsz
超過晚間長度限制
. .
. .
終止w/core
sigabrt
異常終止(abort)
. .
. .
終止w/core
sigbus
硬體故障 .
. .
終止w/core
sigemt
硬體故障
. .
終止w/core
sigfpe
算術異常
. .
. .
終止w/core
sigill
非法硬體指令
. .
. .
終止w/core
sigiot
硬體故障
. .
終止w/core
sigquit
終端退出符 .
. .
終止w/core
sigsegv
無效儲存訪問
. .
. .
終止w/core
sigsys
無效系統呼叫
. .
終止w/core
sigtrap
硬體故障
. .
終止w/core
sigxcpu
超過cpu限制(setrlimit)
. .
終止w/core
使用core檔案除錯程式:
程式例項:使用比較簡單的例子算數異常(sigfpe)來學習怎麼除錯程式。
**如下:
/*core_dump_test.c*/
#include int main()
編譯:
gcc –g core_dump_test.c -o core_dump_test
如果需要除錯程式的話,使用gcc編譯時加上-g選項,這樣除錯core檔案的時候比較容易找到錯誤的地方。
執行:./core_dump_test
顯示:floating exception (core dumped)。
執行core_dump_test程式出現了「算數除法異常」,但沒有產生core檔案。這是因為系統預設core檔案的大小為0,所以沒有建立。可以用ulimit命令檢視和修改core檔案的大小。
ulimit -c 0
ulimit -c 1000
ulimit -c 1000
-c 指定修改core檔案的大小,1000指定了core檔案大小。也可以對core檔案的大小不做限制,如:
ulimit -c unlimited
ulimit -c unlimited
調式core檔案
core檔案是個二進位制檔案,需要用相應的工具來分析程式崩潰時的記憶體映像。
file core
core: elf 32-bit lsb core file 80386 version 1, from 'core_dump_test'
顯示產生core檔案的程序名稱:
core_dump_test。
然後在linux下可以用gdb來除錯core檔案:
gdb core_dump_test core
gnu gdb 6.6
gdb is free software, covered by the gnu general public license, and you are
welcome to change it and/or distribute copies of it under certain conditions.
type "show copying" to see the conditions.
there is absolutely no warranty for gdb. type "show warranty" for details.
this gdb was configured as "i386-pc-solaris2.10"...
reading symbols from /usr/lib/libc.so.1...done.
loaded symbols for /usr/lib/libc.so.1
reading symbols from /lib/ld.so.1...done.
loaded symbols for /lib/ld.so.1
core was generated by `./core_dump_test'.
program terminated with signal 8, arithmetic exception.
#0 0x080506d5 in main () at core_dump_test.c:6
6 printf("result=%d\n",p/q);
(gdb)
顯示相關的版本資訊及出現錯誤的檔名稱及位置,然後檢視錯誤修改即可。 使用core檔案除錯程式
1 首先編譯程式,命令 gcc g text.c o text 這裡加上 g才能正常顯示出錯資訊。2 然後執行程式,命令 text 如果出錯會提示有段錯誤。3 一般出現錯誤,會在當前目錄產生乙個core.的檔案,如果沒有,你需要執行ulimit c檢視預設的core檔案大小,如果是0,則應該執行命令...
Linux程式崩潰core使用(續)
linux檢視呼叫堆疊的資訊,只是需要更改linux設定,使程式崩潰時候產生core檔案。然後gdb除錯即可。1產生core檔案方法 產生coredump的條件,首先需要確認當前會話的ulimit c,若為0,則不會產生對應的coredump,需要進行修改和設定。ulimit c unlimited...
Linux下core檔案及使用
core檔案的作用 當程式崩潰時,核心有可能把該程式當前記憶體對映到core檔案中,方便程式設計師找到程式出現問題的地方,最常出現的,幾乎所有c程式設計師都出現過的 段錯誤 了。也是最難查出問題原因的乙個錯誤 core檔案是什麼 核心檔案 core file 也稱為核心轉存 core dump 是作...