2009-5-18 11:38:01
gdb研究,對應
vc除錯命令
vc我們常用的幾個除錯方法對應到
gdb應該如何實現呢?
如果實現了,我們就可以用
gdb像用
vc那樣除錯那樣輕鬆了。
gdb vc
除錯對照表:
實現功能
vcgdb
修改後編譯
f7make
跳出函式(
step out
)shift+f11finish,f
重新啟動
ctrl+shift+f5run,r
執行到指定行
f9+f5tbreak,tb + continue,c
中斷程式
ctrl+alt+breakctrl+c
中斷後繼續執行
f5continue,c
中斷後單步
不可以next,n
條件中斷
無法實現
有多種條件設定方法(附1)
觀察變數條件
變數上方右鍵新增監視
有多種情況處理(附2)
檢視斷點資訊
alt+f9info break,i b
清除所有斷點
ctrl+shift+f9del,d
清除指定斷點
滑鼠到指定斷點處
f9del
想清除的斷點號
跳出迴圈
在迴圈後**除右鍵執行到此處
until,u(
在for
,while行)
檢視函式中變數
alt+4info local,
其中display
變數名可在離開函式前實時觀察自動列印不用每次都執行
info local
檢視引數
滑鼠放在引數上
info arg,info args
中斷時檢視堆疊
alt+7break trace,bt
檢視堆疊中某函式處相關變數
滑鼠選擇
frame +num(
在堆疊中編號),
up,down
在某個斷點修改變數值
直接在變數視窗修改
set,s +
變數名=xx附1
:條件中斷
無法實現
有多種條件設定方法(附1)
(1)b if
條件比如
b if i == 1,
或者b if str="abc"
如果斷點已經設定,
info break
檢視斷點號
condition
斷點號條件
比如condition 1 null == p (
2)斷點命中次數會被統計,
i b可以檢視
可以設定某個斷點被命中
n次後中斷
比如:ignore 3 10 第
3個斷點在執行上面命令後再命中
10此才中斷,預設命中
0次後中斷,也就是每次都中斷
有了這個條件就可以在自己想要的命中次數後中斷來檢視變數情況了,對中途出錯
時候的除錯很有幫助附2
觀察變數條件
變數上方右鍵新增監視
有多種情況處理(附2)
(1)watch
變數或者表示式
就相當於設定了乙個硬斷點,當變數被修改時就會中斷程式,並列印修改前後的值
表示式可以是位址前面加上強制型別,這樣對全域性不可見但是位址不變的變數監視很有用處(1
)list
檔名:行號和b
檔名:行號
這兩個命令要在
b main
;run
後才有效(2
)b後面不加如何東西表示在當前行設定斷點(3
)p 區域性變數提示
no symbol xx in current context
錯誤,編譯選項在
-g的基礎上機上
-o0和
-wall
和-ggdb,
比如是cpp
那麼設定:
cxx_flags =-o0 -wall -g -ggdb (
4)list
行號,函式名,變數名是預設在查詢當前活動檔案,當前活動檔案也就是
list
檔名或者函式名進入的檔案,或者中斷後所在的檔案,可想象成
vc中當前開啟的檔案,可以在上面直接執行
b行號,也不用多此一舉的
b 檔名
行號了,不過前提時確保當前活動檔案是否是你想要設定斷點的檔案。
gdb除錯命令
一 gdb常用命令簡介 rrun 執行.程式還沒有執行前使用 c cuntinue 執行到下一斷點處 qquit 退出tab tab命令補全功能 h help幫助s step 跟入函式 nnext 執行下一行的 如果是函式呼叫,也當作一行 執行到此函式返回 b breakpoint 設定斷點,用法 ...
GDB除錯命令
gdb的命令很多,本文不會全部介紹,僅會介紹一些最常用的。在介紹之前,先介紹gdb中的乙個非常有用的功能 補齊功能。它就如同linux下 shell中的命令補齊一樣。當你輸入乙個命令的前幾個字元,然後輸入tab鍵,如果沒有其它命令的前幾個字元與此相同,shell將補齊此命令。如果有 其它命令的前幾個...
GDB除錯命令
用gdb除錯程式 gdb概述 gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像vc bcb等ide的除錯,但如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc bcb的圖形化偵錯程式更強大的功能。所謂 寸有所長,尺有所短 就是這...