在應用程序中,經常會導致段錯誤,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
這是個錯誤的賦值---數組越界
下面是測試文件