AskDefine | Define debugger

Dictionary Definition

debugger n : a program that helps in locating and correcting programming errors

User Contributed Dictionary



to debug + -er


  1. computer program that debugs.


Extensive Definition

A debugger is a computer program that is used to test and debug other programs. The code to be examined might alternatively be running on an instruction set simulator (ISS), a technique that allows great power in its ability to halt when specific conditions are encountered but which will typically be much slower than executing the code directly on the appropriate processor.
When the program crashes, the debugger shows the position in the original code if it is a source-level debugger or symbolic debugger, commonly seen in integrated development environments. If it is a low-level debugger or a machine-language debugger it shows the line in the disassembly. (A "crash" happens when the program cannot continue because of a programming bug. For example, perhaps the program tried to use an instruction not available on the current version of the CPU or attempted access to unavailable or protected memory.)
Typically, debuggers also offer more sophisticated functions such as running a program step by step (single-stepping), stopping (breaking) (pausing the program to examine the current state) at some kind of event by means of breakpoint, and tracking the values of some variables. Some debuggers have the ability to modify the state of the program while it is running, rather than merely to observe it.
The importance of a good debugger cannot be overstated. Indeed, the existence and quality of such a tool for a given language and platform can often be the deciding factor in its use, even if another language/platform is better-suited to the task. However, it is also important to note that software can (and often does) behave differently running under a debugger than normally, due to the inevitable changes the presence of a debugger will make to a software program's internal timing. As a result, even with a good debugging tool, it is often very difficult to track down runtime problems in complex multi-threaded or distributed systems.
The same functionality which makes a debugger useful for eliminating bugs allows it to be used as a software cracking tool to evade copy protection, digital rights management, and other software protection features.
Most mainstream debugging engines, such as gdb and dbx provide console-based command line interfaces. Debugger front-ends are popular extensions to debugger engines that provide IDE integration, animation, and visualization features.

Hardware support for debugging

Most modern microprocessors at least one of these features in their CPU design to make debugging easier:
  • hardware support for single-stepping a program, such as the trap flag.
  • An instruction set that meets the Popek and Goldberg virtualization requirements makes it easier to write debugger software that runs on the same CPU as the software being debugged; such a CPU can execute the inner loops of the program under test at full speed, and still remain under the control of the debugger.
  • In-System Programming allows an external hardware debugger to re-program a system under test (for example, adding or removing instruction breakpoints)
  • hardware support for data breakpoints, such as page fault hardware
  • JTAG pins

List of debuggers


  • Jonathan B. Rosenberg, How Debuggers Work: Algorithms, Data Structures, and Architecture, John Wiley & Sons, ISBN 0-471-14966-7

External links

debugger in Czech: Debugger
debugger in Danish: Debugger
debugger in German: Debugger
debugger in Spanish: Depurador
debugger in Esperanto: Erarserĉilo
debugger in French: Débogueur
debugger in Icelandic: Kembiforrit
debugger in Italian: Debugger
debugger in Dutch: Debugger
debugger in Japanese: デバッガ
debugger in Polish: Debuger
debugger in Portuguese: Depurador
debugger in Russian: Отладчик
debugger in Finnish: Debuggeri
debugger in Swedish: Avlusare
debugger in Thai: ดีบั๊ก
debugger in Ukrainian: Дебагер
Privacy Policy, About Us, Terms and Conditions, Contact Us
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2
Material from Wikipedia, Wiktionary, Dict
Valid HTML 4.01 Strict, Valid CSS Level 2.1