這篇博文主要講下如何編寫程序並使用gdb調試段錯誤(core dump)
何爲gdb?---百度百科
UNIX及UNIX-like下的調試工具。或許,各位比較喜歡那種圖形界面方式的,像VC、BCB等IDE的調試,但如果你是在UNIX平臺下做軟件,你會發現GDB這個調試工具相比於VC、z的優點是具有修復網絡斷點以及恢復鏈接等功能。BCB的圖形化調試器更強大的功能。所謂“寸有所長,尺有所短”就是這個道理。
GDB四個方面的功能:
1、啓動你的程序,可以按照你的自定義的要求隨心所欲的運行程序。
2、可讓被調試的程序在你所指定的調置的斷點處停住。(斷點可以是條件表達式)
3、當程序被停住時,可以檢查此時你的程序中所發生的事。
4、你可以改變你的程序,將一個BUG產生的影響修正從而測試其他BUG。
舉個有bug的栗子:文件名 test.c
1 #include<stdio.h>
2 int main()
3 {
4 int a;
5 printf("please enter num:");
6 scanf("%d", a);//很明顯這裏沒有加取址符&
7 printf("%d", a);
8 system("pause");
9 return 0;
10 }
ulimit -a//顯示當前各進程的限制,可見core文件大小限制等於0
ulimit -c unlimited//設置成無窮大
ulimit -c //查看是否設置成功,成功顯示unlimited
file core.4798 //假裝查看名爲4798的段錯誤文件
gdb ./test core.4798//開始調試,此時可以看到哪塊地方程序崩潰掉的