调试工具
調試工具(英語:)亦稱除錯程式、調試器,指一種用於调试其它程式的電腦程式及工具。能夠讓程式碼在指令組模擬器(ISS)中可以檢查運行狀況以及選擇性地運行,以便排错、除錯。當開發的進度遇到瓶頸或找不出哪裡有問題時,這技術將是非常有用的。但是將程式運行在除錯器之下,這將比直接在運作的平台以及處理器上執行還要來得慢。
软件开发 |
---|
核心行动 |
范式与模式 |
方法论与框架 |
支持行为 |
实践 |
工具 |
标准与知识体系 |
當程式當機時,如果除錯器是屬於來源階段除錯器(source-level debugger)或象徵階段除錯器(symbolic debugger),除錯器即可以顯示出錯誤所在位置的原始碼,並使其於整合開發環境裡也能看見。要是屬於低階除錯器(low-level debugger)或機器語言除錯器(machine-language debugger)的話,它將能顯示的是一行一行的反組譯碼(這裡指的當機情況是指,當發生原因是因為程式設計師在設計上的疏失,使得程式無法繼續正常執行的情況。例如程式嘗試去調用某個對在該版本的CPU上而言是不合理的操作,或者是對保護或無法存取的記憶體位置進行寫入)。
典型的除錯器通常能夠在程式執行時擁有以下這些功能,例如單步執行(single-stepping)、利用中斷點(breakpoint)使程式遇到各種種類的事件(event)時停止(breaking)(一般用於使程式停止在想要檢查的狀態)、以及追蹤某些變數的變化。有些除錯器也有能力在想要除錯的程式在執行狀態時,去改變它的狀態,而不僅僅只是用來觀察而已。
一個好的除錯器存在的重要性不誇張。就算一個程式語言/平台在電腦的行程裡運作非常良好。有無除錯器以及除錯器的好壞,對於一個程式語言及平台來說,經常是能不能正常執行的重要因素。總之,軟體要能夠(或經常)執行在不同的除錯器下進行測試,是非常重要的。不過由於除錯器出現將做對軟體程式的內部時間的不可避免的變動。所以,即使是一個幾近完美的除錯器,在多工環境或分散式系統下,它也會更難去測試到執行時(runtime)的問題。
一個除錯器除了能夠用來除錯(debug),同樣的,它也經常被用來作為破解軟體的工具,像是用來跳過軟體的防拷貝保護,還有破解序號驗證,以及其它軟體保護功能。
大部份的主流除錯工程,譬如gdb和dbx提供基於主控台的命令提示介面(console-based command line)。除錯器前端應用,現在普遍是提供給整合式開發工具(IDE)做為除錯引撆、動態化、視覺化等特點。
硬體除錯器
大部份現代微處理器它們都至少會擁有以下這些特點的其中一個包含在他們的CPU設計裡,使得除錯更加容易:
- 硬體支援單步執行(single-steping)程式,以及設置旗標(flag)。
- 利用Popek and Goldberg virtualization requirements指令組使它更加容易去設計除錯軟體,讓除錯軟體能夠在相同的CPU下執行時,有如使用純軟體除錯一般。這樣CPU就可能在測試程式時,以全速執行的狀態下同時能夠保持程式執行速度,並使得其仍然保持在除錯器的控制之下。
- 在系統編程允許一臺外在硬體除錯器,在測試時重新編輯一個程式系統,如增加或去除指示的中斷點
- 硬體支援資料中斷點(breakpoint)的設置,譬如專門處理分頁錯誤的硬體的資料中斷點的設置。
- 設有JTAG
除錯器列表
- CA/EZTEST(Cics Interactive test/debug)
- CodeView
- DBG - A PHP Debugger and Profiler
- dbx
- DebugView
- DDD, Data Display Debugger
- DEBUG DOS Command
- DuxDebugger 页面存档备份,存于— Debugger Disassembler for Windows 64-bit
- Distributed Debugging Tool(DDT)
- Dynamic debugging technique (DDT), and its octal counterpart Octal Debugging Technique
- Eclipse
- TotalView
- GNU Debugger(GDB)
- Insight
- Interactive Disassembler(IDA Pro)
- Java Platform Debugger Architecture
- JSwat,開源Java調試工具
- Nemiver, Graphical C/C++ Debugger for the GNOME desktop environment
- MacsBug
- OLIVER (CICS interactive test/debug)
- OllyDbg
- PyDbg,開源Python調試工具
- IBM Rational Purify
- sdb
- SIMMON(Simulation Monitor)
- SIMON (Batch Interactive test/debug)
- SoftICE
- Turbo Debugger
- Ups - C, Fortran source level debugger
- WinDbg
- Valgrind
- VB Watch Debugger for Visual Basic 6.0
- x64dbg
- Visual Studio Debugger
參考資料
- Jonathan B. Rosenberg, How Debuggers Work: Algorithms, Data Structures, and Architecture, John Wiley & Sons, ISBN 0-471-14966-7
外部連結
- Learn the essentials of debugging 页面存档备份,存于 How to improve your debugging skills, a good article at IBM developerWorks.
- OpenRCE: Various Debugger Resources and Plug-ins 页面存档备份,存于