GDB 基本命令

2021-08-10 18:14:16 字數 1630 閱讀 9783

什麼是gdb ?為什麼需要gdb?沒有gdb行不行?有了gdb有哪些好處?

gdb是gnu開源公司開發的乙個強大的程式除錯工具。

如果在linux下執行程式,gdb這個工具會有比vc,bcb更加強大的功能。

gdb主要作用:(就是幫助我們自動完成設定好的操作)

① :啟動程式,可以按照自定義的要求執行程式

② :可以讓被除錯的程式在你指定的斷點處停住

③ :當停住時,可以檢視程式(如變數的值)

④ :動態的改變程式的執行環境

gdb指令:(在linux下編譯生成可執行檔案)

gcc –g test.c -o test

啟動gdb:gdb ./ test

執行程式:run

檢視**:l (list)

格式:list (預設顯示10行,可重複執行顯示全部**)

set listsize (設定顯示行數,如set listsize 20)

設定斷點:break (breakpoint)

格式:break [function]或break [標號]

break filename :linenum (在原始檔的第linennum行停住)

break (若沒有引數則停在下一條指令處)

break [function] 或[標號] if [condition](在條件成立時才停止程式)

break 20 if i==3

設定觀察點:watch (watchpoint)

觀察點一般觀察某個表示式的值是否發生變化,如果有變化,馬上停住程式

格式:watch [變數]或[表示式](為變數設乙個觀察點,當這變數一有變化就停止執行)

rwatch [變數]或[表示式] (當變數被讀時,停止)

awatch [變數]或[表示式] (當變數被讀或寫時,停止);

檢視斷點:info break

檢視觀察點:info watch

繼續執行:finish

繼續執行:continue (繼續執行直到下乙個斷點,若沒遇到斷點就執行到結束)

finish和continue 的區別

①、finish:執行程式,直到當前函式完成返回。並列印函式返回時的堆疊位址和返回值及引數值等資訊

②、continue [ignore-count] c [ignore-count] fg [ignore-count]

恢復程式執行,直到程式結束,或是下乙個斷點到來。ignore-count表示忽略其後的斷點次數。continue,c,fg三個命令都是一樣的意思。

單步執行:step

單步執行:next

step與next的區別

step:一行一行執行,遇到函式時,調到函式內執行

next:一行一行執行,遇到函式時,調過函式執行,不會進入函式。

刪除斷點:delete、clear、

格式:delete [標號]

clear [function]

clear [filename:linenum]

忽略斷點:disable (gdb不會刪除斷點,當你又需要時,enable就可以)

格式:disable [標號]

退出gdb:quit

標號是info的編號

gdb基本命令

為了記憶,就打上來與大家分析,常用的gdb除錯命令 bt 檢視各級函式呼叫及引數 finish 連續執行到當前函式返回為止,然後停下來等待命令 f 選擇棧幀 i 檢視當前棧幀區域性變數的值 l 列出源 list 行號 列出從第幾行開始的源 list 函式名 列出某個函式的源 n 執行下一條語句 p ...

gdb基本命令

可以參考 命令描述backtrace 或bt 檢視各級函式呼叫及引數 finish 連續執行到當前函式返回為止,然後停下來等待命令 frame 或f 幀編號 選擇棧幀 info 或i locals 檢視當前棧幀區域性變數的值 list 或l 列出源 接著上次的位置往下列,每次列10行 list 行號...

GDB基本命令

借用阿甘老媽的一句話 life is like a box of chocolates,you never know what you re going to get.自己做夢也不會想到,多年之後又回到linux的世界中。生活中的事情有太多不確定性,但如果你準備的夠充分,再怎麼變化,也都在你的掌控之...