gdb 介紹:
gdb互動命令:
更強大的工具 cgdb:
常用自我檢測:
簡 述:在 mac 下安裝和呼叫 gdb 除錯程式。和 gdb 一些常用的使用引數含義。
?:macos 10.14.6
?gcc/g++ 9.2.0
?gdb8.3
在 linux 下面安裝gdb 真的 so 容易; 但是在 mac 上面,尤其是高版本的,安裝過程中就會遇到各種坑,親自把所有的坑都踩了一遍,安裝教程如文:
在macos10.14.6安裝最新gdb8.3的詳細教程,含可能遇到的所有坑(網上最新教程)
編譯程式:
執行除錯:
gdb 是乙個由 gnu 開源組織發布的、unix / linux 作業系統下的、基於命令列的、功能強大的程式除錯工具。
啟動gdb後,進入到互動模式,通過以下命令完成對程式的除錯;注意高頻使用的命令一般都會有縮寫,熟練使用這些縮寫命令能提高除錯的效率;
執行:next
:(簡寫 n),單步跟蹤程式,當遇到函式呼叫時,也不進入此函式體;此命令同 step 的主要區別是,step 遇到使用者自定義的函式,將步進到函式中去執行,而 next 則直接呼叫函式,不會進入到函式體內。
step
(簡寫s):單步除錯如果有函式呼叫,則進入函式;與命令n不同,n是不進入呼叫的函式的
until
:當你厭倦了在乙個迴圈體內單步跟蹤時,這個命令可以執行程式直到退出迴圈體。
until + 行號
: 執行至某行,不僅僅用來跳出迴圈
call 函式(引數)
:呼叫程式中可見的函式,並傳遞「引數」,如:call gdb_test(55)
quit
:簡記為 q ,退出gdb
設定斷點:
檢視源**:
列印表示式:
查詢執行資訊:
分割視窗:
註解:
互動模式下直接回車的作用是重複上一指令,對於單步除錯非常方便;
cgdb
可以看作 gdb 的介面增強版,用來替代 gdb 的 gdb -tui。cgdb 主要功能是在除錯時進行**的同步顯示,這無疑增加了除錯的方便性,提高了除錯效率。介面類似 vi,符合 unix / linux 下開發人員習慣; 如果熟悉 gdb 和 vi,幾乎可以立即使用 cgdb。
gdb 除錯利器
linuxexampl//測試回憶 2020-03-15:
brew和brew cask有什麼區別?
g++ -g
lshow ?size
set ?size 20 設定一次顯示多少行**
b 斷點
i b (info) 檢視斷點資訊
d 2 3 (d 4-11) 刪除斷點
dis/ena 4 設定/取消 無效斷點
b 17 if i == 3 設定條件斷點
ptype b 檢視變數型別
p a 檢視變數的值(print)
n 執行下一行(next) 後面一直按回車
display a 每走一行**,都顯示出變數 a 的值
i display 檢視所有的顯示變數
undisplay 1 不再顯示變數的值(先執行 i display)
c 一次執行多行 (continue)
s 進入到函式體 (step)
start 停在 main(
){ 的地方
r 停在了第乙個斷點 (run)
set val i = 5 設定迴圈變數的值
until 跳出 for 迴圈 (此for 裡面沒有斷點)
finsish 跳出函式體內部 (裡面也沒有斷點)
gdb 偵錯程式的使用
gdb 偵錯程式的使用 在用gcc編譯程式時,加上 g 引數,然後執行 gdb 可執行程式名 就進入gdb除錯模式 常用指令 1.l list 列出程式清單 2.r run 執行程式 3.b breakpoint 設定斷點,格式 b 行號 函式名 4.b num if i 20 設定斷點的觸發條件 ...
GDB偵錯程式
偵錯程式gdb 一 啟動和退出gdb gdb除錯的物件是可執行檔案,而不是程式的源 如果要使乙個可執行檔案可以被gdb除錯,那麼在使用編譯器gcc編譯程式時需要加入 g選項。gdb除錯乙個程式的命令格式是 gdb 程式檔名 也可以在linux提示符下,直接輸入gdb,然後使用file命令裝入要除錯的...
gdb偵錯程式
在使用gdb偵錯程式之前,必須在編譯程式時加上 g選項 功能 顯示上次內容之前或之後的10行內容,首次使用顯示main 函式之前或之後的10行內容 命令 list 簡稱 l 功能 顯示引數行之前和之後的10行內容.命令 list line number 簡稱 l 10 功能 顯示原始檔從一行到另一行...