A debugger is a computer program that is used to test and debug other programs. Computer programs (also software programs, or just programs) are instructions for a Computer. 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. An instruction set simulator (ISS is a Simulation model, usually coded in a High-level programming language, which mimics the behavior of a mainframe or
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. In Computing, an integrated development environment ( IDE) is a Software application that provides comprehensive facilities to Computer programmers If it is a low-level debugger or a machine-language debugger it shows the line in the disassembly. A disassembler is a Computer program that translates Machine language into Assembly language —the inverse operation to that of an assembler. (A "crash" happens when the program cannot continue because of a programming bug. A crash in Computing is a condition where a program (either an application or part of the Operating system) stops performing its expected function and also A software bug (or just “bug” is an error flaw mistake Failure, fault or “undocumented feature” in a Computer program that prevents it 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. Memory protection is a way to control memory usage on a computer and is core to virtually every Operating system. Computer data storage, often called storage or memory, refers to Computer components devices and recording media that retain digital )
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. A breakpoint, in Software development, is an intentional stopping or pausing place in a program, put in place for Debugging purposes 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. Computer programs (also software programs, or just programs) are instructions for a Computer. 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. Distributed computing deals with Hardware and Software Systems containing more than one processing element or Storage element concurrent
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. Software cracking is the modification of Software to remove protection methods Copy prevention, trial/demo version serial number hardware key CD check Copy protection, also known as content protection, copy prevention, or copy restriction, is a technology for preventing the unauthorised reproduction
Most mainstream debugging engines, such as gdb and dbx provide console-based command line interfaces. The GNU Debugger, usually called just GDB, is the standard Debugger for the GNU software system Debugger front-ends are popular extensions to debugger engines that provide IDE integration, animation, and visualization features. In Computer programming, some of the most capable and popular debugger programs implement only a simple Command line interface (CLI — often to maximize In Computing, an integrated development environment ( IDE) is a Software application that provides comprehensive facilities to Computer programmers
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. CPU design is the Design engineering task of creating a Central processing unit (CPU a component of Computer hardware. This article discusses the flag register specific to the x86 architecture
- 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. The Popek and Goldberg virtualization requirements are a set of sufficient conditions for a computer architecture to efficiently support system Virtualization.
- 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
Winpdb debugging itself.
In-System Programming (abbreviated ISP is the ability of some Programmable logic devices Microcontrollers and other programmable electronic chips to be programmed A breakpoint, in Software development, is an intentional stopping or pausing place in a program, put in place for Debugging purposes In Computer storage technology a page is a fixed-length block of memory that is used as a unit of transfer between Physical memory and external storage like a Joint Test Action Group ( JTAG) is the usual name used for the IEEE 1149 Winpdb is a platform-independent GPL Python Debugger with support for multiple threads, Namespace modification Embedded
- 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
- Etnus TotalView
- Frysk Debugging, Monitoring, and Tracing Toolkit
- gDEBugger is a commercial OpenGL debugger and OpenGL ES debugger. CA/EZTEST was a CICS interactive test/debug software package distributed by Computer Associates and originally called EZTEST /CICS produced by Capex CodeView was a standalone Debugger created by David Norris at Microsoft in 1985 as part of its development toolset DBG is an Open source Debugger and profiler for the PHP programming language. Data Display Debugger, or DDD, is a popular Free software (under the GNU GPL) Graphical user interface for command-line debuggers such as The D programming language, also known simply as D, is an object-oriented, imperative, multiparadigm System programming language debug is a command in DOS, MS-DOS, OS/2 and Microsoft Windows which runs the program debug A partial list of the most common commands for Microsoft 's MS-DOS Operating system follows For other expansions of "DDT" see DDT (disambiguation. For other expansions of "ODT" see ODT. Octal Debugging Technique, or ODT, was the name of several Debugger In Computing, Eclipse is a Software platform comprising extensible Application frameworks tools and a Runtime library for Software OpenGL ( Open G raphics L ibrary is a standard specification defining a cross-language Cross-platform API for writing applications that produce OpenGL ES ( OpenGL for E mbedded S ystems is a subset of the OpenGL 3D graphics API designed for Embedded devices Real time GPU debugger and analysis tool provided by Graphic Remedy. Available for Windows and Linux
- 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
- RubyDebug
- 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. The GNU Debugger, usually called just GDB, is the standard Debugger for the GNU software system Insight is real-mode Debugger for DOS. It includes i80486 Disassembler, i8086 Assembler, trace-into and The Interactive Disassembler, more commonly known as simply IDA, is a commercial Disassembler widely used for Reverse engineering. The Java Platform Debugger Architecture is a collection of APIs to debug Java code JSwat is a standalone graphical Java Debugger, written to use the Java Platform Debugger Architecture. MacsBug is a low-level ( Assembly language /machine-level Debugger for pre- Mac OS X Apple Macintosh computers OLIVER ( CICS interactive test/debug was a proprietary testing and Debugging Toolkit for interactively testing programs designed to run on IBM OllyDbg is a Debugger that emphasizes binary code analysis which is useful when source code is not available See also Purification for the sense of Refining. Purify is a Memory debugger program used by Software developers sdb is a symbolic Debugger for C programs It may be used to examine their files and to provide a controlled environment for their execution SIMMON ( SIM ulation MON itor was a Proprietary Software testing system developed in the late 1960s in the IBM Product Test Laboratory SIMON (Batch interactive test/debug was a proprietary Test/debugging toolkit for interactively testing Batch programs designed to run on IBM 's System SoftICE is a Kernel mode Debugger for Microsoft Windows. Crucially it is designed to run underneath Windows such that the Operating system is Turbo Debugger was a machine-level debugger for MS-DOS executables sold by Borland. See also the UPS disambiguation article Ups is an Open source source -level Debugger WinDbg is a multipurpose Debugger for Microsoft Windows, distributed on the web by Microsoft Valgrind is a Programming tool for memory debugging, Memory leak detection and profiling. VB Watch is a Visual Basic programming utility VB Watch consists of three tools for Visual Basic 6 0
- VC++ Debugger
- Visual Studio Debugger
- XSLT and XQuery debugger in the Oxygen XML Editor
- rr0d
- Next Byte Codes debugger for Lego NXT by SorosyDotCom NBC Debugger,
See also
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. The Microsoft Visual Studio Debugger is a Debugger that ships along with all versions of Microsoft Visual Studio. The <oXygen/> XML Editor is a multi-platform XML editor, XSLT / XQuery debugger and profiler with Unicode support Next Byte Codes (NBC is a simple language with an Assembly language syntax that can be used to program Lego Mindstorms NXT programmable bricks Lego Mindstorms NXT is a programmable Robotics kit released by Lego in late July 2006 In Computer programming, some of the most capable and popular debugger programs implement only a simple Command line interface (CLI — often to maximize A breakpoint, in Software development, is an intentional stopping or pausing place in a program, put in place for Debugging purposes A watch is a real-time preview of a variable or an expression's value In Software engineering, performance analysis, more commonly today known as profiling, is the investigation of a program's behavior using information gathered as the Software testing is an Empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test, with respect to the This is a list of significant tools for Static code analysis. A memory debugger is a Programming tool for finding Memory leaks and Buffer overflows These are due to bugs related to the allocation and deallocation A core dump is the recorded state of the working memory of a Computer program at a specific time generally when the program has terminated abnormally ( crashed In Software testing an anomaly is anything that differs from expectation Jonathan B Rosenberg is the Author of the book How Debuggers Work Algorithms Data Structures and Architecture, published in 1996 by Wiley International Business Machines Corporation abbreviated IBM and nicknamed "Big Blue", is a multinational Computer Technology
- OpenRCE: Various Debugger Resources and Plug-ins
Dictionary
debugger
-noun
- (programming) A computer program that helps the user to test and debug other programs, by enabling their step-by-step execution controlled by the user, setting of breakpoints, and monitoring values of variables.
© 2009 citizendia.org; parts available under the terms of GNU Free Documentation License, from http://en.wikipedia.org
network: | |