再探gdb經常使用命令
前面已經有了一篇對gdb經常使用命令的總結。見 http://blog.csdn.net/u011848617/article/details/12838875
這裏對眼下學過的gdb命令進行了較完整的整理。
1、使用gdb調試代碼,就要在編譯時加入-g選項。
2、gdb -q —————— 啟動gdb時不輸出版權說明
3、gdb打開文件:
(1)gdb filename;
(2)先輸入gdb,然後在gdb命令行輸入file filename。
4、gdb選項(gdb中好多命令都有自己的簡寫字母):
不輸入直接回車 ------------ 反復運行上一條命令
q(quit) ------------------- 退出gdb
file filename ------------- 打開文件filename
l(list) ------------------- 顯示10行代碼。若再次執行則顯示接下來10行代碼
list 5,10 ---------------- 顯示第5到10行的代碼
list test.c:5,10 -------- 顯示源文件test.c中第5到10行的代碼
list get_sum -------------- 顯示get_sum函數周圍的代碼
list test.c:get_sum ------- 顯示源文件test.c中get_sum函數周圍的代碼
shell XXX ----------------- 執行shell命令XXX
search/forward str -------- 從當前行向前查找第一個匹配的字符串str
reverse-search str -------- 從當前行向後查找第一個匹配的字符串str
r(run) -------------------- 執行程序
help XXX ------------------ 查看命令XXX的用法
help all ------------------ 查看全部命令的用法
whatis 變量或表達式 ------- 顯示變量或表達式的數據類型
set variable 變量=值 ------ 給變量賦值
kill ---------------------- 結束當前程序的調試
continue ------------------ 讓程序繼續執行,直到下一個斷點或者執行完為止
n(next) ------------------- 繼續運行下一條語句,遇到函數把函數當作一條語句來運行
step ---------------------- 繼續運行下一條代碼,遇到函數會跟蹤進入函數
nexti/stepi --------------- 單步運行一條機器指令
watch 變量名 -------------- 設置變量監測點
bt(backtrace) ------------- 顯示程序當前執行位置和對當前位置的棧跟蹤
display 變量或表達式 ------ 加入觀察點。以後每次執行命令都會顯示相應變量或表達式的值
undisplay num ------------- num為設置的display編號,能夠用info display獲取。不能用變量名
5、設置斷點:
b(break) 行號 ----------------------- 在第n行設置斷點
break fun_name ---------------------- 為函數fun_name設置斷點
break 行號或函數名 if 條件 ---------- 程序在執行中。當條件滿足時。在某行中斷暫停執行
watch 條件表達式 -------------------- 程序執行中,滿足條件時暫停執行,不須要寫行號
info breakpoints -------------------- 查看當前全部的斷點
disable 斷點編號 -------------------- 使斷點n失效
enable 斷點編號 --------------------- 使斷點n有效
clear ------------------------------- 刪除本行斷點(假設存在的話)
clear 行號 -------------------------- 刪除此行斷點
clear 函數名 ------------------------ 刪除該函數的斷點
delete 斷點編號 --------------------- 刪除指定編號的斷點
6、print命令:
print XXX ------------------------------- 打印輸出XXX的值
print 變量 = 值 ------------------------- 對變量賦值
print [email protected] ------------ 打印以表達式值開始的n個數
7、watch和display設置監測點的差別:
watch監測僅僅有當監測的變量值發生變化時才顯示變量,並且舊值和新值都會顯示。
display監測每一次執行命令都會顯示變量的值,僅僅會顯示變量的最新值。
再探gdb經常使用命令