調試應用程序之使用core dump

    在應用程序中,經常會導致段錯誤,segment default,我們可以使用二分法一個個打印,或者用gdb 一步步的step進去查看打印,但是這在很大的程序中顯得效率很低,這時我們可以使用core dump 來調試查看出差的地方。

      core就是核心的意思,這裏是內存,dump是倒垃圾的意思,就是將程序中的內存出錯的像倒垃圾一樣呈現出來。
下面簡單的顯示一下core dump的用法

產生core文件。一般這個core文件都是命名爲core 或者core.xxx(xxx就是產生錯誤的進程號)

設置core文件爲沒有限制大小
ulimit -c unlimited  (如果要不產生core文件可用ulimit -c 0)


應用程序編譯時加上-g選項

運行可執行程序
./core_test.o

ls 可看見產生core文件

core  core_test.c  core_test.o


開始調試:
gdb ./core_test.o core


可看見出錯的地方。

Program terminated with signal 11, Segmentation fault.
#0  0x080483c7 in core_test () at core_test.c:6
這是個錯誤的賦值---數組越界


下面是測試文件




發佈了38 篇原創文章 · 獲贊 0 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章