概述
gdb 提供深入的調試功能,包括控制程式執行流程、檢查變數值和查看記憶體狀態。它對於分析已編譯二進位檔案中的問題特別有用。
主要功能
- 啟動/停止正在運行的程式
- 設定中斷點 (breakpoint)
- 檢查和修改變數值
- 查看堆疊追蹤 (stack trace)
- 檢查記憶體內容
- 分析核心檔案 (core file)
主要選項
gdb 主要以互動模式使用,但您可以在啟動時使用特定選項進行初始設定或執行非互動式腳本。
啟動/連接選項
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`gdb` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用範例
gdb 通常以互動方式使用,因此範例也包含在 gdb 提示符內輸入的命令。
啟動基本調試會話
gdb ./my_program
使用 gdb 加載已編譯的程式(例如 my_program)以啟動調試會話。
設定中斷點並執行
gdb ./my_program
(gdb) b main
(gdb) r
在 main 函數中設定中斷點並執行程式。程式將在中斷點處停止。
檢查變數值
gdb ./my_program
(gdb) b my_function
(gdb) r
(gdb) p my_variable
在斷點處停止後,輸出特定變數的當前值。
分析核心檔案
gdb ./my_program core.dump
使用程式崩潰時生成的核心檔案來分析崩潰時的程式狀態。
連接到正在運行的進程
gdb -p 12345
將 gdb 連接到進程 ID (PID) 12345 以進行調試。
啟動時自動執行命令
gdb -ex 'b main' -ex 'r' ./my_program
在 gdb 啟動時同時設定 main 函數的中斷點並執行程式。
安裝
gdb 通常不包含在大多數 Linux 發行版中,需要作為開發工具包的一部分進行安裝。
Debian/Ubuntu
sudo apt update && sudo apt install gdb
使用 APT 套件管理器安裝 gdb。
Fedora/CentOS/RHEL
sudo dnf install gdb
使用 DNF 或 YUM 套件管理器安裝 gdb。
提示與注意事項
有效使用 gdb 的提示和注意事項。
編譯時包含調試資訊
要使用 gdb 調試,您需要使用 `-g` 選項編譯程式以包含調試資訊。否則,您將無法查看原始程式碼資訊或變數名稱。
- 範例:`gcc -g myprogram.c -o myprogram`
常用的 gdb 命令
在 gdb 提示符內常用的核心命令。
- `b <函數名/行號>`:設定中斷點 (breakpoint)
- `r`:執行程式 (run)
- `n`:移動到下一行 (next)
- `s`:進入函數 (step)
- `p <變數名>`:列印變數值 (print)
- `c`:繼續執行直到下一個中斷點 (continue)
- `q`:退出 gdb (quit)
利用 TUI 模式
利用 gdb 的文字使用者介面 (TUI) 模式,您可以同時查看原始程式碼、暫存器和組合語言,從而提高調試效率。
- `gdb -tui <program>` 或在 gdb 中使用 `layout src` 命令