編譯時一般需要加 -g選項,eg. g++ -g test.cpp -o test
用gdb啟動某個程式:
gdb test
開始執行直到結束或者遇到斷點:
run(r)
流程控制:
continue(c) 繼續執行
next(n) 單步執行,不進入函式內部
step(s) 單步執行,會進入函式內部
until 退出迴圈體
until 行號 執行至某一行(需要加檔案名字吧?)
finish 執行程式,直到當前函式返回,並列印函式返回時的堆疊位址、返回值、引數值。
斷點相關:
info b 顯示斷點資訊;
break xx.cpp:33 在xx.cpp的第33行設定乙個斷點;
break xx.cpp:33 if a>0 在xx.cpp的第33行設定一條件斷點;
delete 斷點號 刪除該斷點;
enable/disable 斷點號 使能/禁止該斷點;
堆疊相關:
bt backtrace 顯示當前呼叫堆疊;
print 表示式 列印上下文變數
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的世界中。生活中的事情有太多不確定性,但如果你準備的夠充分,再怎麼變化,也都在你的掌控之...