什麼是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的世界中。生活中的事情有太多不確定性,但如果你準備的夠充分,再怎麼變化,也都在你的掌控之...