首頁 > 環境與工具程式 > gdb

gdb: GNU 調試器

gdb (GNU Debugger) 是一個強大的工具,用於分析和調試用 C、C++、Fortran 等多種程式語言編寫的程式。它對於理解程式的內部行為、查找和修復錯誤至關重要。它支援多種調試場景,例如連接到正在運行的進程或分析核心檔案。

概述

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` 命令

相同類別命令