逆向工具 GDB 基本影片教學

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

螢幕錄影版本

簡報版本

You may also like