1. 使用gcc -g 參數編譯生成可調試的程序app
gcc main.c -o app -g
2. 啟動gdb調試程序
gdb app
如果需要給程序傳遞參數的話,在gdb啟動后使用set args傳參:
set args xxx xxx xxx
啟動調試:
run #或縮寫:r
3. gdb啟動后查看代碼的命令:list(縮寫:l)
l #默認顯示10行代碼
l 25 #查看第25行附近的代碼
l main.c #查看main.c的代碼
l math.c:add #查看math.c文件中 add函數的代碼
l math.c:30 #查看math.c文件中 第30行附件的代碼
- show listsize #查看list命令一次顯示的行數
- set listsize 20 #設置list命令一次顯示20行
4. 設置斷點的命令:break(縮寫:b)
b 12 #在第12行添加斷點
b 行號
b 函數名
b 文件名:行號
b 文件名:函數名
5. 查看斷點信息的命令:info(縮寫:i)
i b
6. 刪除斷點的命令:del(縮寫:d)
d 2 #刪除Num為 2 的斷點
d 3 8 #刪除Num為3和8的斷點
d 4-7 #刪除Num(從4到7)的斷點
7. 設置斷點無效的命令:dis
dis 8 #停用Num為8的斷點
8.啟用斷點的命令:ena
ena 8 #啟用Num為8的斷點
9.設置條件斷點:
b 17 if i==10 #循環體中i的值為10時,斷點生效
10. 啟動程序開始調試的命令:run(縮寫:r)
11.程序遇斷點后,繼續運行程序的命令:continue(縮寫:c)
12.打印變量值的命令:print(縮寫:p)
13.查看變量類型的命令:ptype
14.逐步調試命令:next(縮寫:n)
15.顯示變量值的命令:display
display 變量
16.查看當前顯示變量的列表:
i display
17.取消變量值的顯示命令:undisplay
undisplay Num
18.進入函數內部的命令:step(縮寫:s)
19.跳出函數體的命令:finish
注意:函數體內部如果有循環斷點的話, 無法達到跳出函數體的效果。
20.設置變量值的命令:set var
set var x=10 #設置變量x的值為10
21.跳出for循環的命令:until
注意:for循環中如果還有斷點的話,是達不到跳出for循環效果的。
22.退出調試的命令:quit(縮寫:q)