linux學習筆記(二) gdb

2021-08-25 21:20:38 字數 1135 閱讀 9464

從小對著vs點著stepin,stepover的,乍一沒有圖形介面的編譯除錯一體化工具,還真的是抓狂。

沒辦法,人都是逼出來的。在windows下鼓搗了一天eclipse+cygwin無果後,晚上只好看了下gdb。

成果記錄下:

0、gdb有補齊;欲除錯程式用g++編譯帶-g

1、常用命令:

file 《可執行二進位制檔名》 —— 載入欲除錯程式

list(l) —— 檢視原始碼

run(可給引數,可重定向,可支援萬用字元) —— 執行程式

break 《原始檔行號》《函式名》 —— 設定斷點

condition 《斷點編號》 —— 在斷點設定條件(即條件滿足時才中斷)

info break —— 檢視斷點資訊

next (n)|step—— 單步執行

watch 《變數名》《表示式》 —— 設定觀察點

continue (c)—— 繼續執行

print 《變數名》 (p)—— 觀察變數值

bt —— 檢視呼叫堆疊

frame —— 列印指定幀

info locals —— 列印當前幀的區域性變數

info還有很多,frame,args,variables等...

set 變數=值 —— 在程式執行時改變變數取值

啟動gdb時,可gdb core,將core檔案載入

可 gdb attach乙個正在執行的程式進行除錯

call —— 呼叫一函式執行

whatis 變數名 —— 檢視變數型別

參考文章:

2、多程序除錯方法:

follow-fork-mode

[parent|child] :parent: fork之後繼續除錯父程序,子程序不受影響。child: fork之後除錯子程序,父程序不受影響。

attach :通過ps和pstree可以檢視到所要除錯的子程序pid。在子程序前加入一段除錯**,在除錯**中加斷點,構造條件從斷點處繼續執行。

3、多執行緒除錯方法:

info threads —— 檢視當前被除錯程序的執行緒

thread —— 切換除錯執行緒為指定執行緒

set scheduler-locking off|on|step—— 針對當前除錯執行緒和其他執行緒執行的控制

gdb學習筆記

gdb是乙個開源的debug工具,適用於c語言 c 等。2.1 啟動gdb 對c c 程式的除錯,需要在編譯前加上 g選項 假設現有名為hello.cpp的原始檔,編譯時執行 g hello.cpp o hello g注 編譯後的檔名要和源檔名相同,這樣gdb可以找到它。除錯可執行檔案 g hell...

gdb學習筆記

gdb 是乙個工具,他是除錯工具,能夠用於程式的除錯。我們在生成程式的時候,可以選擇 前者會比後者大,因為需要插入除錯資訊,這些資訊就是除錯工具需要的二進位制 debugging symbol 插入到我們寫的程式中,以便於我們使用基本的除錯命令,去檢視記憶體 暫存器,打斷點 除錯啥的?就是找錯的!找...

GDB學習筆記(二) 除錯段錯誤

1.編譯錯誤 主要為語法錯誤 2.執行錯誤 主要為段錯誤 3.邏輯錯誤 主要為 邏輯出錯,執行不一定會報錯訪問系統資料區 test1.c include int main void 輸出結果 root localhost test gcc wall g test1.c o test1 root lo...