DEBUGGER
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.
It is worth pointing out that 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 protection and other programmed limitations.
Many programmers (especially those accustomed to development in an IDE) dislike or have difficulty working with console debuggers, instead using a front-end incorporating more sophisticated animation and visualisation functions and more sophisticated tools. Some examples of these are listed below.
★ CA/EZTEST (Cics Interactive test/debug)
★ CodeView
★ DAEDALUS
★ DBG - A PHP Debugger and Profiler
★ Xdebug - PHP Debugger, [1]
★ dbx
★ DDD, Data Display Debugger
★ Ddbg - Win32 Debugger for the D Programming Language
★ DEBUG DOS Command
★ Dynamic debugging technique (DDT), and its octal counterpart Octal Debugging Technique
★ Eclipse
★ GoBug symbolic debugger for Windows
★ GNU Debugger (GDB)
★ Insight
★ Interactive Disassembler (IDA Pro)
★ Java Platform Debugger Architecture
★ JSwat, open-source Java debugger
★ MacsBug
★ OLIVER (CICS interactive test/debug)
★ OllyDbg
★ 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
★ Visual Studio Debugger
★ XSLT and XQuery debugger in the Oxygen XML Editor
★ Debugger front-end
★ Debugging
★ Profiler (computer science)
★ Computer programming
★ Software testing
★ List of tools for static code analysis
★ Memory debugger
★ Core dump
★ Anomaly in software
★ Remote debugging
★ 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
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.
It is worth pointing out that 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 protection and other programmed limitations.
Many programmers (especially those accustomed to development in an IDE) dislike or have difficulty working with console debuggers, instead using a front-end incorporating more sophisticated animation and visualisation functions and more sophisticated tools. Some examples of these are listed below.
| Contents |
| List of debuggers |
| See also |
| References |
| External links |
List of debuggers
★ CA/EZTEST (Cics Interactive test/debug)
★ CodeView
★ DAEDALUS
★ DBG - A PHP Debugger and Profiler
★ Xdebug - PHP Debugger, [1]
★ dbx
★ DDD, Data Display Debugger
★ Ddbg - Win32 Debugger for the D Programming Language
★ DEBUG DOS Command
★ Dynamic debugging technique (DDT), and its octal counterpart Octal Debugging Technique
★ Eclipse
★ GoBug symbolic debugger for Windows
★ GNU Debugger (GDB)
★ Insight
★ Interactive Disassembler (IDA Pro)
★ Java Platform Debugger Architecture
★ JSwat, open-source Java debugger
★ MacsBug
★ OLIVER (CICS interactive test/debug)
★ OllyDbg
★ 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
★ Visual Studio Debugger
★ XSLT and XQuery debugger in the Oxygen XML Editor
See also
★ Debugger front-end
★ Debugging
★ Profiler (computer science)
★ Computer programming
★ Software testing
★ List of tools for static code analysis
★ Memory debugger
★ Core dump
★ Anomaly in software
★ Remote debugging
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.
★ OpenRCE: Various Debugger Resources and Plug-ins
This article provided by Wikipedia. To edit the contents of this article, click here for original source.
psst.. try this: add to faves

العربية
中国
Français
Deutsch
Ελληνική
हिन्दी
Italiano
日本語
Português
Русский
Español



