EncyclopediaABC   DEFG   HIJK   LMNO   PQRS   TUVW   XYZOther
 
Home / Encyclopedia / D

Debugger

A debugger is a computer program that is used to test and debug other programs (the "target" program). 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 somewhat slower than executing the code directly on the appropriate processor. Some debuggers offer two modes of operation - full or partial simulation to limit this impact.

When the program "crashes" or reaches a preset condition, the debugger typically shows the position in the original code if it is a source-level debugger or symbolic debugger, commonly now seen in integrated development environments. If it is a low-level debugger or a machine-language debugger it shows the line in the disassembly (unless it also has online access to the original source code and can display the appropriate section of code from the assembly or compilation).(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 or program animation), stopping (breaking) (pausing the program to examine the current state) at some event or specified instruction by means of a 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. It may also be possible to continue execution at a different location in the program.

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, 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 current 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, program animation, and visualization features. Some early mainframe debuggers such as Oliver and SIMON provided this same functionality for the IBM System/360 as long ago as the 1970s.

Language dependency

Some debuggers operate on a single specific language while others can handle multiple languages transparently. For example if the main target program is written in COBOL but CALLs Assembler subroutines and also PL/1 subroutines, the debugger may dynamically switch modes to accommodate the changes in language as they occur.

Memory protection

Some debuggers also incorporate memory protection to avoid storage violations such as buffer overflow. This may be extremely important in transaction processing environments where memory is dynamically allocated from memory 'pools' on a task by task basis.

Hardware support for debugging

Most modern microprocessors have 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, or the newer Nexus or ETM (Embedded Trace Macrocell from ARM) Debug interfaces

List of debuggers

AppPuncher Debugger (used to debug Rich Internet Applications)
AQtime
CA/EZTEST (Cics Interactive test/debug)
CodeView
DBG — a PHP Debugger and Profiler
dbx
DDD (Data Display Debugger)
DEBUG — the built-in debugger of DOS and Microsoft Windows
Distributed Debugging Tool (Allinea DDT)
DDTLite Allinea DDTLite for Visual Studio 2008
Opera Dragonfly
Dynamic debugging technique (DDT), and its octal counterpart Octal Debugging Technique
Eclipse
FusionDebug
TotalView
GNU Debugger (GDB)
Intel Debugger (IDB)
Parasoft Insure++
Insight
Interactive Disassembler (IDA Pro)
iSYSTEM – In circuit debugger for Embedded Systems
Embedded System Debug Plug-in for Eclipse
Java Platform Debugger Architecture
JSwat — open-source Java debugger
Nemiver — graphical C/C++ Debugger for the GNOME desktop environment
MacsBug
OLIVER (CICS interactive test/debug) - a GUI equipped instruction set simulator (ISS)
OllyDbg
Omniscient Debugger (Forward and backward debugger for Java)
IBM Rational Purify
RealView Debugger - Commercial debugger produced for and designed by ARM
sdb
SIMMON (Simulation Monitor)
SIMON (Batch Interactive test/debug) - a GUI equipped instruction set simulator (ISS) for batch
SoftICE
Turbo Debugger
Ups — C, Fortran source level debugger
WinDbg
Zeta Debugger
Valgrind
VB Watch Debugger — debugger for Visual Basic 6.0
Microsoft Visual Studio Debugger
Xdebug — PHP debugger and profiler.

Source: Wikipedia

Translation

The word "Debugger" occurs as such in the following languages: English, Bosnian, Czech, Danish, German, Italian, Dutch, Polish, Simple English, Serbo-Croatian.

Translation(s) in other languages: Arabic: المصحح, Bulgarian: Дебъгер, Spanish: Depurador, Esperanto: Erarserĉilo, Basque: Araztaile, French: Débogueur, Icelandic: Kembiforrit, Malayalam: ഡീബഗ്ഗിങ്ങ്, Malay: Penyahpepijat, Japanese: デバッガ, Portuguese: Depurador, Russian: Отладчик, Finnish: Debuggeri, Swedish: Avlusare, Thai: ดีบั๊ก, Ukrainian: Зневаджувач, Chinese: 调试工具.


show options »   

Search inside:










  More articles in: