侦错器(英语:Debugger)亦称侦错程式、侦错工具,指一种用于侦错其它程式的电脑程式及工具。能够让程式码在指令组模拟器(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(页面存档备份,存于互联网档案馆)
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.