Debugger
From Free net encyclopedia
A debugger is a computer program that is used to debug (and sometimes test or optimize) 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 can't 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 same functionality which makes a debugger useful for eliminating accidental bugs allows it to be used as a cracking tool to learn how to evade copy prevention and other programmed limitations.
Debuggers make the debugging process much easier and faster, to the point where the availability of a good one for a particular language and platform can sway the decision to use that language rather than another language that is superior in other respects but lacks such tools.
An important difficulty is that software running under a debugger might behave differently than software running normally, because a debugger changes the internal timing of a software program. That makes it often very difficult to track down runtime problems in complex multi-threaded or distributed systems.
Some people find traditional debuggers hard to work with, and use instead a front-end.
Contents |
Notable debuggers
- adb
- Agile-DB Agile-DB JTAG Debugger for Powerpc, MIPS, Xscale and ARM architecture Microprocessors.
- Allinea Distributed Debugging Tool (DDT) (DDT)
- AntiC
- Broadway
- CodeView
- DAEDALUS
- dbg PHP Debugger and Profiler client e server
- dbg Library main
- ddb
- dbx
- doctorJ debugging the JavaDoc documentation with the code
- dprobes
- Dynamic debugging technique (DDT), and its octal counterpart ODT
- e2dbg the Embedded ELF Debugger
- Etnus TotalView
- GNU Debugger (GDB)
- Java Platform Debugger Architecture
- ladebug
- MacsBug
- NoIce- an embedded systems debugger
- OllyDbg
- Prism Parallel Debugger
- Purify
- sdb
- SoftICE
- T-Bug, the integrated debugger in Perl 5
- TMON
- Turbo Debugger
- WinDbg
- Valgrind
- The Visual Studio Debugger
See also
- Debugger front-end
- Profiler (computer science)
- Computer programming
- Software testing
- Memory debugger
- Flaw detection
- Core dump
References
- Jonathan B. Rosenberg, How Debuggers Work: Algorithms, Data Structures, and Architecture, John Wiley & Sons, ISBN 0-471-14966-7
External links
- Learn the essentials of debugging How to improve your debugging skills, a good article at IBM developerWorks.da:Debugger
fr:Débogueur it:Debugger nl:Debugger ja:デバッガ pl:Debuger ru:Отладчик sv:Debugger uk:Дебагер