一、編譯文件生成可執行文件

如果想用調試器執行一個可執行文件, 在用gcc編譯時必須加上-g選項。
加上-g選項以后,gcc在編譯是會做以下額外的操作:
1. 創建符號表,符號表包含了程序中使用的變量名稱的列表。
2. 關閉所有的優化機制,以便程序執行過程中嚴格按照原來的C代碼進行。
二、ulimit -c unlimited 允許生成core文件

三、gdb a.out 或者先輸入gdb 然后 file a.out 進入調試

四、r/run 開始運行程序

五、l /list 顯示多行源代碼
1. list 從上次的位置開始顯示,默認情況下,一次顯示10行。

2. list n顯示以第n行為中心的10行代碼

3. list functionname顯示以functionname的函數為中心的10行代碼

4. list - 顯示剛才打印過的源代碼之前的代碼

5.set listsize n 設置顯示的行數
6.show listsize顯示當前設置顯示的行數

六、b/break 設置斷點 程序運行到斷點時會停下
1. break location:在location位置設置斷點,改位置可以為某一行,某函數名或者其它結構的地址。
2. info breakpoint:查看斷點信息。

3. delete breakpoints 斷點號:刪除斷點。

七、display/disp 跟蹤查看某個變量,每次停下都顯示它的值
也可以使用disable,enable,delete,info命令修改及查看其狀態,用法與對斷點的一樣
八、s/step 執行下一條語句,如果該語句為函數調用,則進入函數執行其中的第一條語句
九、n/next 執行下一條語句,如果該語句為函數調用,不會進入函數內部執行(即不會一步步地調試函數內部語句)
十、p/print 打印內部變量值

十一、c/continue 繼續運行程序,直到遇到下一個斷點
十二、set var name=value 在程序運行中動態改變變量的值
十三、watch 監視變量值的變化

十四、backtrace/bt 查看堆棧使用信息
十五、f/frame 查看某一幀的堆棧信息
f n 查看第n條堆棧信息。

十六、k/kill 終止正在調試的程序
十七:q/quit 退出gdb環境
