gdb, 又稱gnu偵錯程式,是用來幫助除錯我們程式的工具。
gdb可以幹以下幾件事:
1. 給程式設定(特定條件下的)斷點
2. 當程式停在斷點處時,我們檢視所有變數、暫存器的值
3. 當程式停在斷點處時,我們除了能檢視所有變數、暫存器的值以外,還能在不改變源**的情況下改變這些值(這個確實屌)
在我們學習使用gdb除錯程式之前,我們先看看gdb有哪些命令。
命令功能
rrun, 直接調到斷點處,沒有設定斷點的話直接執行程式
b fun
設定乙個斷點breakpoint在函式」fun」的最開始
b n在當前執行原始檔的第n行設定斷點
b file.c:n
在當前原始檔file.c的第n行設定斷點
d n刪掉delete第n行的斷點
info break
顯示所有斷點資訊
c繼續(continue)執行程式,一直到下乙個斷點或程式結束
f執行直到當前函式(function)結束
s按step除錯1行,會進入函式體
s n按step除錯接下來的n行
n除錯1行,與按s命令不同的是此處不進入函式體
p var
輸出(print)變數」var」的值
set var=val
設定變數」var」的值
bt列印呼叫堆疊(stack trace)
q退出gdb
gdb有如下兩種使用方式
1. 除錯會崩潰、有邏輯錯誤的程式
2. 除錯程式崩潰時自動生成的coredump
編譯並構建程式,加上除錯選項-g,e.g. gcc -g main.cpp -o test.out
用gdb來執行程式,gdb test.out
使用gdb命令來分析、除錯程式
退出gdb
源**
#include
int main()
while ( balance >= target );
printf("%d no. of years to achieve target balance.\n", year);
return
0;}
一下為詳細除錯步驟
步驟1:編譯並構建程式,加上除錯選項-g
gcc -g main.c -o test.out步驟2:用gdb來執行程式
gdb test.out步驟3:在main函式入口處設定乙個斷點
b main步驟4:執行程式
run步驟5:使用step除錯到13行
s步驟6:檢視balance, rate, interest的值
p balance步驟7:使用step除錯到15行p rate
p interest
步驟8:檢視balance, rate, interest的值(發現沒有迴圈,表明while條件出錯,應該是balance < target)
gdb: the gnu project debuggerdebugging with gdb
gdb tutorial
GDB 簡單易上手的新人教程
gdb,又稱gnu偵錯程式,是用來幫助除錯我們程式的工具。gdb可以幹以下幾件事 1.給程式設定 特定條件下的 斷點 2.當程式停在斷點處時,我們檢視所有變數 暫存器的值 3.當程式停在斷點處時,我們除了能檢視所有變數 暫存器的值以外,還能在不改變源 的情況下改變這些值 這個確實屌 在我們學習使用g...
GDB簡單教程
本文的內容基本來自 這篇教程,我在使用裡面的示例程式時遇到了 is not a file or directory 的錯誤,因此修改了一下原來到源程式。這個示例程式很簡單,包含兩個類 node和linkedlist。為了方便除錯,我們將這兩個類放到乙個檔案中。首先檢查是否安裝gdb。如果您的系統中有...
簡單易上手的Vue專案建立
安裝node.js v10 查詢版本號 node v npm v安裝git工具 安裝cnpm npm install g cnpm registry 安裝腳手架 cnpm install vue cli g建立專案 vue create 專案名稱啟動專案 進入專案目錄 執行 npm run serv...