GDB使用技巧

2021-06-22 09:18:01 字數 2431 閱讀 7562

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 的偵錯程式相比有過之而無不及,使用也就相對複雜一些。一方面是它的親和力稍差,畢竟是給程式設計師用的,不用做得傻瓜化。另外一方面它的命令太...