偵錯器(英語:Debugger)亦稱偵錯程式偵錯工具,指一種用於偵錯其它程式的電腦程式及工具。能夠讓程式碼指令組模擬器英语Instruction set simulator(ISS)中可以檢查運行狀況以及選擇性地運行,以便排错、偵錯。當開發的進度遇到瓶頸或找不出哪裡有問題時,這技術將是非常有用的。但是將程式運行在偵錯器之下,這將比直接在運作的平台以及處理器上執行還要來得慢。

當程式當機時,如果偵錯器是屬於來源階段偵錯器(source-level debugger)或象徵階段偵錯器(symbolic debugger),偵錯器即可以顯示出錯誤所在位置的原始碼,並使其於整合開發環境裡也能看見。要是屬於低階偵錯器(low-level debugger)或機器語言偵錯器(machine-language debugger)的話,它將能顯示的是一行一行的反組譯碼(這裡指的當機情況是指,當發生原因是因為程式設計師在設計上的疏失,使得程式無法繼續正常執行的情況。例如程式嘗試去調用某個對在該版本的CPU上而言是不合理的操作,或者是對保護或無法存取的記憶體位置進行寫入)。

典型的偵錯器通常能夠在程式執行時擁有以下這些功能,例如單步執行single-stepping)、利用中斷點(breakpoint)使程式遇到各種種類的事件(event)停止(breaking)(一般用於使程式停止在想要檢查的狀態)、以及追蹤某些變數的變化。有些偵錯器也有能力在想要偵錯的程式在執行狀態時,去改變它的狀態,而不僅僅只是用來觀察而已。

一個好的偵錯器存在的重要性不誇張。就算一個程式語言/平台在電腦的行程裡運作非常良好。有無偵錯器以及偵錯器的好壞,對於一個程式語言及平台來說,經常是能不能正常執行的重要因素。總之,軟體要能夠(或經常)執行在不同的偵錯器下進行測試,是非常重要的。不過由於偵錯器出現將做對軟體程式的內部時間的不可避免的變動。所以,即使是一個幾近完美的偵錯器,在多工環境分散式系統下,它也會更難去測試到執行時(runtime)的問題。

一個偵錯器除了能夠用來偵錯(debug),同樣的,它也經常被用來作為破解軟體的工具,像是用來跳過軟體的防拷貝保護,還有破解数字版权管理,以及其它軟體保護功能。

大部份的主流偵錯工程,譬如gdbdbx英语dbx (debugger)提供基於主控台的命令行界面。偵錯器前端應用,現在普遍是提供給整合式開發工具(IDE)做為偵錯引撆、動態化、視覺化等特點。

硬體偵錯器

编辑

大部份現代微處理器它們都至少會擁有以下這些特點的其中一個包含在他們的CPU設計裡,使得偵錯更加容易:

  • 硬體支援單步執行(single-steping)程式,以及設置旗標(flag)。
  • 利用Popek and Goldberg virtualization requirements指令組使它更加容易去設計偵錯軟體,讓偵錯軟體能夠在相同的CPU下執行時,有如使用純軟體偵錯一般。這樣CPU就可能在測試程式時,以全速執行的狀態下同時能夠保持程式執行速度,並使得其仍然保持在偵錯器的控制之下。
  • 在系統編程允許一臺外在硬體偵錯器,在測試時重新編輯一個程式系統,如增加或去除指示的中斷點
  • 硬體支援資料中斷點(breakpoint)的設置,譬如專門處理分頁錯誤的硬體的資料中斷點的設置。
  • 設有JTAG

偵錯器列表

编辑
 
Winpdb debugging itself.

參見

编辑

參考資料

编辑

外部連結

编辑

📚 Artikel Terkait di Wikipedia

GNU侦错器

GNU偵錯器(英語:GNU Debugger,缩写:GDB),是GNU軟體系統中的標準偵錯器,此外GDB也是個具有移攜性的偵錯器,經過移攜需求的調修與重新編譯,如今許多的類UNIX作業系統上都可以使用GDB,而現有GDB所能支援除錯的程式語言有C、C++、Pascal以及FORTRAN。 GNU Debugger

Venkman

Venkman是网景和Mozilla的JavaScript调试工具,从Mozilla Application Suite分离出来后,主要以扩展形式存在,化名JavaScript Debugger。该扩展兼容于Mozilla Firefox、Mozilla Thunderbird且是SeaMonkey的默认组件,也有用于Nvu及其后续计划的版本。

WinDbg

程序、驱动程序,以及核心态下的操作系统自身。该软件是GUI界面,但与更为著名但功能稍弱的Visual Studio Debugger(英语:Visual Studio Debugger)几乎完全不同。 WinDbg可调试核心态或用户态下的内存卸载文件。 WinDbg能从服务器自动装载匹配的调试符号(英语:Debug

KDbg

GNU 调试器的图形前端。KDbg 使用 KDE 架构下的相关组件实现。 Nemiver - GNOME 调试器 Data Display Debugger(DDD),一个主题调试器前端 ups (调试器) Xxgdb - X Window系统调试器前端 http://www.kdbg.org/ (页面存档备份,存于互联网档案馆)

Qt Creator

Creator 核心和外部原生偵錯工具之間的介面: GNU Symbolic Debugger (gdb) Microsoft Console Debugger (CDB) internal Java Script debugger KDevelop Qt Creator 9 released. 2022-11-24

VisualDSP++

VisualDSP++是美國模擬器件公司(ADI)針對DSP晶片開發的整合開發環境(IDE),可支持ADI公司所有系列的DSP處理器。整合有C\C++編譯器、Debugger工具、VisualDSP++ Kernel(VDK)。目前最新版本是VisualDSP++ 5.0。 CSYNC:同步内核流水线指令 SSYNC:同步系统流水线指令

OllyDbg

Engine Debuggers for reverse-engineering software x64dbg Syser Debugger Syser Debugger by reversecode (页面存档备份,存于互联网档案馆) x32/x64 (reverse engineering &

JPDA

Java平台调试器架构(英語:Java Platform Debugger Architecture,JPDA)是一组用于调试Java代码的API。 Java调试器接口(Java Debugger Interface,JDI)——定义了一个高层次Java接口,开发人员可以利用JDI轻松编写远程调试工具。