GDB (也稱為GNU Project調試器)是一個開源和免費的命令行軟件,允許用戶和開發人員同樣看到“內部”另一個程序的內容,而它是已執行,或者某個應用程序在某個時刻崩潰的原因。
功能一目了然
主要功能包括四種不同的技術,可幫助開發人員捕獲行為中的錯誤,啟動應用程序並指定可能影響其行為的任何內容,使程序在指定條件下停止,在應用程序崩潰時檢查日誌,逐步更改一個程序,以試驗糾正一個問題的影響,並繼續了解另一個錯誤。 它還支持調試用各種編程語言編寫的程序,包括C,C ++,Pascal ,Ada,Objective-C和許多其他人。
它是一個命令行應用程序
GNU Project調試器始終是一個命令行應用程序。要使用它,您必須運行“gdb”。命令在終端模擬器中,然後執行“幫助”。命令(不帶引號)a gdb提示符。此外,您還可以輸入“全部幫助”。命令查看所有命令的列表,鍵入“help”後跟命令名查看完整文檔,鍵入“help”後跟類名查看該類中的命令列表,鍵入“apropos word”進行搜索與“word。”相關的命令。
命令類列表
輸入“幫助”後如上所述,您將看到命令類列表,包括別名(顯示其他命令的別名),斷點(使程序在某些點停止),數據(用於檢查數據),文件(用於檢查文件) ,內部(維護命令),模糊(晦澀的功能),運行(用於運行程序),堆棧(用於檢查堆棧),狀態(用於狀態查詢),支持(用於支持設施),跟踪點(用於跟踪程序執行而無需停止程序)和用戶定義的(用戶定義的命令)。
支持的硬件平台和操作系統
GDB從偏移設計為跨平台應用程序,在Microsoft Windows等主流操作系統和一些最流行的Linux / UNIX變體上運行。它在32位和64位硬件平台上都受支持。
此版本中的新功能:
- PR gdb / 22824(GDB 8.1 NEWS文件中新的rbreak Python函數的誤導性描述)
- PR gdb / 22849(ctrl-c在擴展遠程中不起作用)
- PR gdb / 22907([回歸] gdbserver不適用於僅限文件名的二進製文件)
- PR gdb / 23028(vcvtpd2dq的反彙編不一致)
- PR gdb / 23053(修復-D_GLIBCXX_DEBUG gdb-add-index regression)
- PR gdb / 23127([AArch64] GDB不能用於調試使用高虛擬地址的軟件)
- PR server / 23158(gdbserver在Windows上不再起作用)
- PR斷點/ 23210([8.1 / 8.2回歸]虛假斷點地址從0xf7fe7dd3調整為0xfffffffff7fe7dd3)
8.1版中的新功能:
- 默認情況下,所有範圍都設置了C ++函數的斷點(“wild”匹配);
- 支持在標有C ++ ABI標記的函數上插入斷點;
- 表達式評估期間的目標浮點算術仿真(需要MPFR 3.1或更高版本);
- 各種Python腳本增強功能;
- 改善Rust支持;特別是,現在可以在調試Rust代碼時檢查Trait對象;
- GDB不再對沒有調試信息的符號類型做出假設,以避免產生錯誤且常常令人困惑的結果;
- 'enable'和'disable'命令現在接受一系列斷點位置;
- 用於在第一條指令啟動程序的新'starti'命令;
- 新的'rbreak'命令通過正則表達式模式插入多個斷點(需要Python);
- 'ptype'命令現在支持在結構中打印字段的偏移量和大小;
- 'gcore'命令現在支持轉儲所有內存映射('-a'命令行選項);
- TUI單鍵模式的新快捷方式:“i”代表stepi,“o”代表nexti;
- GDBserver增強功能:
- 支持將環境變量傳輸到GDBserver;
- 支持使用指定的初始工作目錄啟動劣質流程;
- 在Unix系統上,支持globbing擴展和劣質命令行參數的變量替換;
- 各種完成改進;
- 現在可以配置使用'compile'命令編譯和注入代碼的命令;
- 新的'--readnever'命令行選項可在不需要調試信息時加速GDB啟動;
- 支持以下新的原生配置:
- FreeBSD / aarch64(aarch64 * - * - freebsd *);
- FreeBSD / arm(arm * - * - freebsd *);
- 支持以下新目標:
- FreeBSD / aarch64(aarch64 * - * - freebsd *);
- FreeBSD / arm(arm * - * - freebsd *);
- OpenRISC ELF(or1k * - * - elf)
- 刪除了對以下目標和本機配置的支持:
- Solaris2 / x86(i?86 - * - solaris2。[0-9]);
- Solaris2 / sparc(sparc * - * - solaris2。[0-9]);
版本中的新功能:
- 構建此版本的GDB現在需要以下工具:
- C ++ - 11編譯器(例如,GCC 4.8或更高版本);
- GNU make 3.81或更高版本。
- 此版本中的更改包括:
- C ++:支持右值參考
- Python腳本增強功能:
- 啟動,停止和訪問正在運行的btrace錄製的新功能。
- gdb.Type中的右值參考支持。
- GDB命令解釋器:
- 用戶命令現在接受無限數量的參數。
- “eval”。命令現在擴展用戶定義的參數。
- DWARF第5版支持
- (請注意,它的.debug_names索引尚不支持)。
- GDB / MI增強功能:
- 新建-file-list-shared-libraries命令列出程序中的共享庫。
- 新的-target-flash-erase命令,用於擦除閃存。
- 支持原生FreeBSD / mips(mips * - * - freebsd)
- 支持以下目標:
- Synopsys ARC(arc * - * - elf32)
- FreeBSD / mips(mips * - * - freebsd)
- 其他增強功能:
- MS-Windows主機現在支持命令行重定向。
- 支持MS-Windows上的線程名稱。
- 支持GNU / Linux上的PKU註冊。
- 支持sparc32和sparc64上的目標描述。
- 用於擦除閃存的新GDB / CLI命令
- rdrand和rdseed說明記錄/重播支持。
- 已刪除對以下功能的支持:
- 支持使用gcj 編譯的Java程序
- 支持以下配置:
- FreeBSD / alpha(alpha * - * - freebsd *)
- GNU / kFreeBSD / alpha(alpha * - * - kfreebsd * -gnu)
版本7.9.1中的新內容:
- PR build / 18033(C ++樣式註釋用於gdb / iq2000-tdep.c和gdb / compile / compile - * .c)
- PR build / 18298(如果工具配置為triplet而不是quadruplet,則“compile"”命令找不到編譯器)
- PR tui / 18311(在TUI模式下顯示寄存器時的隨機SEGV)
- PR python / 18299(以詳細模式註冊全局漂亮打印機時的例外)
- PR python / 18066(參數“word”在Command.complete(text,word)中似乎已斷開)
- PR pascal / 17815(修復帶有測試用例的類字段的pascal行為)
- PR python / 18285(ptype expr-with-xmethod導致SEGV)
7.9版中的新功能:
- Python腳本增強功能。
- 源代碼編譯並註入劣質。
- 新命令,選項,便利變量/選項。
- MIPS SDE支持(mips * -sde * -elf *)。
- 調試線程程序時更好地處理信號。
版本7.8.2中的新功能:
- PR symtab / 17642([7.8回歸]內部-error:resolve_dynamic_struct:斷言`TYPE_NFIELDS(type)> 0'失敗。)
- PR binutils / 17677(_bfd_elf_get_synthetic_symtab以O(n ^ 2)複雜度運行)
- PR gdb / 16215(SPARC:無法計算此幀的CFA)
- PR gdb / 17525(目標異步:從-x腳本運行程序時未執行斷點命令)
- PR cli / 17828([7.8回歸] -batch -ex r中斷終端)
版本7.8.1中的新功能:
- PR python / 17364(在bound_registers.py中需要更好的打印機名稱)
- PR build / 17104(CFLAGS =" -Wall -Wextra" gdb / confgure --with-babeltrace failed)
- PR gdb / 17345(babeltrace(1.1.2及更高版本)抱怨GDB生成的ctf數據)
- PR build / 17298(gcore:無法獲取註冊:沒有這樣的過程)
- PR python / 17342(Xmethod Python不兼容Python 3)
- PR python / 17355(使用不可讀的arg的Python幀過濾器崩潰)
- PR guile / 17367(將pkg-config腳本作為arg提供給--with-guile時計算公會路徑錯誤)
- PR gdb / 17247(gdb在多線程應用上凍結)
- PR gdb / 17347(回歸:GDB在附加過程中停止運行)
- PR gdb / 17407(Linux vDSO閱讀的回歸)
- PR server / 17457(aarch64 / gdbserver:錯誤的浮點寄存器顯示)
- PR server / 17487(state-> dr_control_mirror == 0在Windows上的gdbserver中斷言失敗)
- PR gdb / 17472(帶註釋,在前台執行時輸入崩潰readline / gdb)
- PR gdb / 17471(重複後台命令使其成為前景)
- PR cli / 17300(在非停止模式下崩潰,繼續-a&(readline_callback_read_char()調用沒有處理程序!)
- PR python / 17372(顯示help()時python掛起)
- PR python / 17408(../../gdb/infrun.c:5256:internal-error:switch_back_to_stepped_thread:斷言`!schedlock_applies(1)'失敗。)
版本7.8中的新功能:
- Guile腳本支持。
- Python腳本增強功能。
- 新命令,選項,便利變量/選項。
- 遠程協議和GDBserver增強功能。
- 新目標配置(PowerPC64 GNU / Linux little-endian)。
- btrace增強功能。
- ISO C99可變長度自動陣列支持。
- “比較部分”。命令現在適用於所有目標。
- “目標原生”命令現在連接到本機目標。
版本7.7中的新功能:
- 增強的Python腳本支持。
- 一些C ++改進。
- 新命令,選項,便利變量/選項。
- 幾個GDB / MI新命令和增強功能。
- 遠程協議和GDBserver增強功能。
- 新目標配置(Nios II,TI MSP430)。
- GDB Windows x64展開數據支持。
- SystemTap SDT探針支持AArch64 GNU / Linux。
- CTF(通用跟踪格式)支持。
- 新腳本gcore和gdb-add-index.sh。
- 改進了arm * -linux記錄/重播支持。
- 刪除了對a.out NetBSD和OpenBSD過時配置的支持。保持支持這些配置的ELF變體。
- “set | show remotebaud”"不推薦使用命令,而使用“show | show serial baud”。
版本7.6.2中的新功能:
- PR斷點/ 16251(AArch64硬件斷點錯誤後叉)
- PR gdb / 16303(GDB 7.6.1不適用於MIPS16和microMIPS上的binutils 2.24)
版本7.6.1中的新功能:
- PR tdep / 15420(無法在較新版本的x86-solaris上調試線程程序 - Solaris 10,Update 10或更高版本)
- PR remote / 15455(QTro遠程數據包已損壞)
- PR build / 15476(由於utils.h中的枚舉類型不完整導致構建失敗)
- PR server / 15594(在64x32 x86 gdbserver中支持不會將地址擴展到64位)
- PR server / 15075(dprintf inteferes with“next”)
- PR server / 15434(dprintf即使在非停止模式下也使用同步'繼續')
- PR tui / 14880(在拆分寄存器佈局中,up會導致value.c中的斷言失敗)
- PR c ++ / 15519(GDB 7.6比使用某個核心文件的GDB 7.5.1慢94倍)
- PR gdb / 15837(GDB打印局部變量的條目值)
- PR gdb / 15415(gdb在傳遞argv [0]時解析符號鏈接)
- PR cli / 15603(CTRL-C不能再中斷)
- PR gdb / 15604(gdbserver socket leak 7.5 regression)
7.5版中的新功能:
- 轉到語言支持。
- 新目標(x32 ABI,microMIPS,瑞薩RL78,HP OpenVMS ia64)。
- 更多Python腳本改進。
- SDT(靜態定義跟踪)探針支持SystemTap探針。
- GDBserver改進(stdio連接,斷點條件的目標端評估,遠程協議改進)。
- 其他雜項改進(加載/卸載共享庫時停止的能力,動態printf等)。
- ARM上的反向調試。
- 二進制“gdbtui”已被遺棄,無法再建造。使用“gdb -tui”代替。
7.4版中的新內容:
- 現在可以更加一致地處理不明確的linespec。
- 現在,當使用“跳過功能”踩踏時,可以跳過不感興趣的功能和文件。和“跳過文件”命令。
- 添加了用於設置和獲取遠程目標硬件觀察點的最大長度限制的命令。
- Python腳本大大改進。
- 進行了許多其他改進,錯誤修正和一般更改。
7.1版中的新功能:
- 支持新目標(包括模擬器):
- Xilinx MicroBlaze
- Renesas RX
- 主要新功能包括:
- 多程序調試,允許調試器控制 以上
- 同一GDB會話中的一個程序。
- 位置獨立可執行(PIE)調試。
- 它還具有許多增強功能和錯誤修復功能,包括:
- Python支持已得到擴展。
- C ++支持改進(命名空間,強制轉換操作符,錯誤修復)
- Tracepoint支持改進。
- 流程記錄改進(保存/恢復執行日誌,硬件
- 觀察點支持)。
- 遠程協議增強功能(Linux內核調試,新數據包
- for tracepoint support)
評論沒有發現