GDB 基本教學
(影片教學在文章最下方)
1. GDB 介紹
GDB(GNU Debugger)是一個強大的調試工具,可用於調試 C、C++ 及其他語言的程式。它允許你設置斷點、單步執行程式、檢查變數值、修改記憶體等。
2. 安裝 GDB
Linux(Ubuntu/Debian)
sudo apt update
sudo apt install gdb
macOS(透過 Homebrew)
brew install gdb
Windows
可透過 MinGW 或 Cygwin 來安裝 GDB。
3. 編譯程式以供 GDB 除錯
在編譯時,需要加上 -g 選項來產生除錯資訊。
gcc -g -o my_program my_program.c
4. 啟動 GDB
gdb my_program
或執行並傳遞參數:
gdb --args my_program arg1 arg2
5. GDB 常用指令
5.1 設置斷點
設定函式內的斷點: break main
設定特定行號的斷點: break 10
設定特定檔案與行號的斷點: break my_program.c:15
5.2 執行程式
執行程式(會停在第一個斷點): run
帶參數執行: run arg1 arg2
5.3 單步執行
執行下一行程式碼(會進入函式內部): step
執行下一行程式碼(不進入函式內部): next
繼續執行直到遇到下一個斷點或程式結束: continue
執行到當前函式返回: finish
5.4 變數與記憶體檢查
顯示變數值: print x
監視變數變化: watch x
列出當前函式的所有變數: info locals
5.5 監控執行狀態
查看呼叫堆疊: backtrace
切換堆疊幀(frame): frame 2
5.6 修改變數值
變更變數內容: set var x = 10
5.7 移除斷點
列出所有斷點: info breakpoints
刪除特定斷點(例如刪除 1 號斷點): delete 1
5.8 退出 GDB
退出除錯模式: quit
6. GDB 進階功能
6.1 記錄程式執行
使用 record 指令記錄程式執行過程: record
反向執行(撤銷一步): reverse-step
反向繼續執行: reverse-continue
6.2 追蹤記憶體
檢查記憶體地址: x/10xw 0x601040
檢視指標指向的內容: print *ptr
螢幕錄影版本
簡報版本