1、啟動
1)程式的執行引數。
set args //指定執行時引數。(如:setargs1020304050)
show args //檢視設定好的執行引數。
2)執行環境
path//設定程式的執行路徑。
show paths //檢視程式的執行路徑。
set environment varname[=value] //設定環境變數。如:setenvuser=hchen
show environment[varname] //檢視環境變數
3)工作目錄
cd //相當於shell的cd命令。
pwd //顯示當前的工作目錄。
4)程式的輸入輸出
info terminal//顯示程式用到的終端的模式
使用重定向空值程式輸出。如run>outfile
tty命令可以指定寫輸入輸出的終端裝置。如tty/dev/ttyb
2、斷點
(gdb)bmake_《按tab鍵》 // 支援聯想功能
break
break
break +offset
break -offset
break filename:linenum
break filename:function
break if
break xx thread
disable 5-8
enable
info break
delete [breakpoints] [range…]
watch //資料斷點,表示式可以是乙個變數或位址
3、執行
c/continue //恢復程式的執行直到程式結束,或下乙個斷點的到來。
s/step //單步跟蹤,如果有函式呼叫,他會進入該函式
n/next //同樣單步跟蹤,如果有函式呼叫,他不會進入函式。
finish //執行程式,直到當前函式完成返回。
return //使用return命令取消當前函式的執行,並立即返回
return
4、堆疊資訊
bt/backtrace//n是乙個正整數,表示只列印棧頂上n層的棧資訊。
f/frame //切換當前的棧
select-frame 對應於frame 命令。
up-silently 對應於up命令。
down-silently 對應於down命令。
info frame //列印出更為詳細的當前棧層的資訊
info args //列印出當前函式的引數名及其值。
info locals //列印出當前函式中所有區域性變數及其值。
list //顯示程式第linenum行周圍的源程式。
list 1,20 //檢視1到20行的**
list //顯示函式名為function的函式的源程式。
list //顯示當前行後面的源程式。
5、變數
print///expr可以為變數或位址
--file:variable
--function::variable
int *array=(int*)malloc(len*sizeof(int))
p*array@len //len為檢視長度
print x=4
set var width=47 //set用於修改gdb引數,建議帶上var
6、自動顯示
設定一些自動顯示的變數,當程式停住時,或是在你單步跟蹤時,這些變數會自動顯示
display
display/
undisplay
delete display
disable display
enable display
info display
7、condition
condition
修改斷點號為bnum的停止條件為expression
condition
清除斷點號為bnum的停止條件。
還有乙個比較特殊的維護命令ignore,可以指定程式執行時,忽略停止條件幾次。
ignore
表示忽略斷點號為bnum的停止條件count次。
8、多執行緒
(gdb)set scheduler-locking on/off
鎖定排程器來避開gdb根據優先權來改變當前執行緒
(gdb)show scheduler -locking
確定當前模式
(gdb)set follow-fork-mode child //跟蹤子程序
(gdb)set follow-fork-mode parent //跟蹤父程序
(gdb)set follow-fork-mode ask //設定gdb在fork時詢問跟蹤哪乙個程序
info threads //檢視當前應用程式中所有的執行緒
gdb使用技巧
1.斷點的設定 普通斷點 b n 注 n為行號 或者是break n。此方法過於簡單,不再舉例說明。條件斷點 b n if 邏輯表示式 注 以上兩種斷點型別中tbreak設定方法與break相同,只不過tbreak只在斷點停一次,過後會自動將斷點刪除,break需要手動控制斷點的刪除和使能。demo...
gdb 使用技巧
實驗平台 linux gcc gdb 除錯正在執行的程序。多次 fork exec 的程式,從頭開始跟蹤非常麻煩。可以使程式停在我們感興趣的地方,然後用 gdb 去 attach。printf i am waiting for being attached by gdb.my pid d s d n...
幾則gdb使用技巧
分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!幾則gdb 使用技巧 gdb的功能強大,與帶gui 的偵錯程式相比有過之而無不及,使用也就相對複雜一些。一方面是它的親和力稍差,畢竟是給程式設計師用的,不用做得傻瓜化。另外一方面它的命令太...