一文入門Linux下gdb調試(二)

 

作者:良知猶存

轉載授權以及圍觀:歡迎添加微信號:Conscience_Remains

總述

    今天我們介紹一下core dump文件,Core dump叫做核心轉儲,它是進程運行時在突然崩潰的那一刻的一個內存快照。操作系統在程序發生異常而異常在進程內部又沒有被捕獲的情況下,會把進程此刻內存、寄存器狀態、運行堆棧等信息轉儲保存在一個文件裏。

  該文件也是二進制文件,可以使用gdb、elfdump、objdump或者windows下的windebug、solaris下的mdb進行打開分析裏面的具體內容。

    基於core文件的快照功能,我們就可以專門調試分析程序崩潰原因了,gdb同時調試一個運行程序和core文件,然後進行gdb調試的步驟,然後查看代碼崩潰瞬間系統信息。

 

使用如下:

gdb  ./abort  ./core    /*  使用gdb調試*/

 

三、生成core文件配置

 

1.代碼崩潰的條件有很多種,我們可以通過 kill -l 指令來查看奔潰的信號

kill -l

 

 

使用內存轉儲文件

ulimit

雖然我們知道進程在coredump的時候會產生core文件,但是有時候卻發現進程雖然崩潰了,但是我們卻找不到core文件。

 

這是因爲系統默認情況下內存轉儲文件 的大小設置是零,我們需要重新配置一下。ulimit  -c 可以設置core文件的大小,如果這個值爲0.則不會產生core文件,這個值太小,則core文件也不會產生,因爲core文件一般都比較大。

2. 其中使用ulimit -c 可以查看你的系統對資源的限制情況

 

ulimit -c

 

發現設置爲0

3.我們可以使用ulimit  -c unlimited來設置無限大,則任意情況下都會產生core文件

 

/*用來設置運行你的系統在應用程序崩潰之時可以生產core dump文件*/ulimit  -c unlimited

 

 

4.執行 ./編譯好的執行文件,代碼崩潰產生內存轉儲的core dump文件,ls 可看到一個名爲core且以進程號爲後綴的文件

 

 

5.調試coredump文件

 gdb ./statck  ./core

調試方法與gdb調試正常程序一樣,詳情參照上一篇一文入門Linux下gdb調試(一)

 

 這就是我分享的gdb core dump 生成及調試方法,如果大家有什麼更好的思路,歡迎分享交流哈。

 

 

更多分享,掃碼關注我

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章