從小對著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...