除錯符號-g 是在編譯的時候產生,而非鏈結的時候產生;所以: 編譯成.o檔案時候,需要帶這個選項.
1. 執行命令: gdb [可執行檔案]
如果不是-g選項編譯出來的,會直接告訴你,不能除錯
2. 通過list標出檔案
多個原始檔可以是: list a.cpp:10 表示列出原始檔a.cpp的第十行(不指定行號,此命令將無效)
並3. 通過break + 行號 打斷點
break 10 在第十行列印結果
break 46 if testsize==100 有條件的 break
注意,不要將斷點設定在無意義的字段,比如 int a; 程式將跑到下乙個有效的語句上面。
next, continue, step區別:
next表示跳往當前**棧中的下一條指令,如果下一條指令是函式呼叫,並且函式中存在斷點,則直接跑到該斷點中止。
continue 表示跳往下乙個斷點, next和continue的區別是: 在當前**堆疊中,step和next都會一條條的執行,而continue直接跑到下乙個斷點去執行去了。 如果當前**中呼叫的是函式棧,則next和continue沒有任何區別【直接跑到斷點處中止】。
step 和next 在當前**棧中相似,都是一條條語句執行,不同的是在函式棧呼叫時,next進入的方式直接跑到斷點處中止(所以叫做"下乙個"),step是從函式棧的起始位置中止(所以叫做「單步」)。
4. 執行run指令,則遇到斷點,就會停止,通過watch + 變數名 檢視結果, next執行到下乙個斷點, continue下乙個斷點,kill結束
5. 為加快除錯速度,以上命令都可以簡寫為第乙個字母。在gdb提示符下按回車健將重複上乙個命令。
該文中列舉的常用的斷點管理命令:
1.所有斷點資訊info break
2. 刪除指定的某個斷點:delete breakpoint 1 該命令將會刪除編號為1的斷點,如果不帶編號引數,將刪除所有的斷點
3.禁止使用某個斷點disable breakpoint 1該命令將禁止斷點 1,同時斷點資訊的 (enb)域將變為 n
4.允許使用某個斷點enable breakpoint 1該命令將允許斷點 1,同時斷點資訊的 (enb)域將變為 y
5.清除原檔案中某一**行上的所有斷點:clean number
6. 函式呼叫 call function(arg1, arg2)
附註環境知識:
文字環境和gui環境的切換[ubuntu下]
ctrl+alt+f1可以,但是只是切換到文字模式,圖形介面還在執行; alt+ctrl+f7返回
GDB除錯入門
用gdb除錯程式 gdb概述 gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像vc bcb等ide的除錯,但如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc bcb的圖形化偵錯程式更強大的功能。所謂 寸有所長,尺有所短 就是這...
gdb除錯簡單入門
gdb 簡單入門 使用過程 1.生成程式檔案 gcc g main.cpp o helloworld 2.進入gdb除錯介面 gdb helloworld 3.斷點設定 新增斷點 命令 b break b main 函式名 b main.cpp 12 檔名 行號 b 12 行號 b object c...
gdb 除錯入門(二) 使用終端進行 gdb 除錯
在安裝完 gdb 後,就可以嘗試使用 gdb 在終端中除錯程式了,如果對安裝 gdb 存在疑惑,請參考 gdb 除錯入門 一 windows linux ubuntu 下安裝 gdb。首先編寫乙個簡單的helloworld.c include intmain 你也可以定位到你需要除錯的 c 程式,然...