fbpx
Wikipedia

Debugger

A debugger or debugging tool is a computer program used to test and debug other programs (the "target" program). The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its execution and monitor changes in computer resources that may indicate malfunctioning code. Typical debugging facilities include the ability to run or halt the target program at specific points, display the contents of memory, CPU registers or storage devices (such as disk drives), and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution.

Winpdb debugging itself

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 (or the same) processor. Some debuggers offer two modes of operation, full or partial simulation, to limit this impact.

A "trap" occurs when the program cannot normally continue because of a programming bug or invalid data. For example, the program might have tried to use an instruction not available on the current version of the CPU or attempted to access unavailable or protected memory. When the program "traps" or reaches a preset condition, the debugger typically shows the location 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).

Features edit

Typically, debuggers offer a query processor, a symbol resolver, an expression interpreter, and a debug support interface at its top level.[1] 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 variables.[2] Some debuggers have the ability to modify program state while it is running. It may also be possible to continue execution at a different location in the program to bypass a crash or logical error.

The same functionality which makes a debugger useful for correcting bugs allows it to be used as a software cracking tool to evade copy protection, digital rights management, and other software protection features. It often also makes it useful as a general verification tool, fault coverage, and performance analyzer, especially if instruction path lengths are shown.[3] Early microcomputers with disk-based storage often benefitted from the ability to diagnose and recover corrupted directory or registry data records, to "undelete" files marked as deleted, or to crack file password protection.

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, program animation, and visualization features.

Record and replay debugging edit

Record and replay debugging,[4] also known as "software flight recording" or "program execution recording", captures application state changes and stores them to disk as each instruction in a program executes. The recording can then be replayed over and over, and interactively debugged to diagnose and resolve defects. Record and replay debugging is very useful for remote debugging and for resolving intermittent, non-deterministic, and other hard-to-reproduce defects.

Reverse debugging edit

Some debuggers include a feature called "reverse debugging", also known as "historical debugging" or "backwards debugging". These debuggers make it possible to step a program's execution backwards in time. Various debuggers include this feature. Microsoft Visual Studio (2010 Ultimate edition, 2012 Ultimate, 2013 Ultimate, and 2015 Enterprise edition) offers IntelliTrace reverse debugging for C#, Visual Basic .NET, and some other languages, but not C++. Reverse debuggers also exist for C, C++, Java, Python, Perl, and other languages. Some are open source; some are proprietary commercial software. Some reverse debuggers slow down the target by orders of magnitude, but the best reverse debuggers cause a slowdown of 2× or less. Reverse debugging is very useful for certain types of problems, but is still not commonly used yet.[5]

Time Travel debugging edit

In addition to the features of reverse debuggers, time travel debugging also allow users to interact with the program, changing the history if desired, and watch how the program responds.

Language dependency edit

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 assembly language subroutines and PL/1 subroutines, the debugger may have to dynamically switch modes to accommodate the changes in language as they occur.

Memory protection edit

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 edit

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 debugger control.
  • In-system programming allows an external hardware debugger to reprogram a system under test (for example, adding or removing instruction breakpoints). Many systems with such ISP support also have other hardware debug support.
  • Hardware support for code and data breakpoints, such as address comparators and data value comparators or, with considerably more work involved, page fault hardware.[6]
  • JTAG access to hardware debug interfaces such as those on ARM architecture processors or using the Nexus command set. Processors used in embedded systems typically have extensive JTAG debug support.
  • Micro controllers with as few as six pins need to use low pin-count substitutes for JTAG, such as BDM, Spy-Bi-Wire, or debugWIRE on the Atmel AVR. DebugWIRE, for example, uses bidirectional signaling on the RESET pin.

Debugger front-ends edit

Some of the most capable and popular debuggers implement only a simple command line interface (CLI)—often to maximize portability and minimize resource consumption. Developers typically consider debugging via a graphical user interface (GUI) easier and more productive.[citation needed] This is the reason for visual front-ends, that allow users to monitor and control subservient CLI-only debuggers via graphical user interface. Some GUI debugger front-ends are designed to be compatible with a variety of CLI-only debuggers, while others are targeted at one specific debugger.

List of debuggers edit

Some widely used debuggers are:

Earlier minicomputer debuggers include:

Mainframe debuggers include:

See also edit

References edit

Citations edit

  1. ^ Aggarwal and Kumar, p. 302.
  2. ^ Aggarwal and Kumar 2003, p. 301.
  3. ^ Aggarwal and Kumar, pp. 307-312.
  4. ^ O'Callahan, Robert; Jones, Chris; Froyd, Nathan; Huey, Kyle; Noll, Albert; Partush, Nimrod (2017). "Engineering Record And Replay For Deployability Extended Technical Report". arXiv:1705.05937 [cs.PL].
  5. ^ Philip Claßen; Undo Software. "Why is reverse debugging rarely used?". Programmers Stack Exchange. Stack Exchange, Inc. Retrieved 12 April 2015.
  6. ^ Aggarwal and Kumar 2003, pp. 299-301.

Sources edit

  • Sanjeev Kumar Aggarwal; M. Sarath Kumar (2003). "Debuggers for Programming Languages". In Y.N. Srikant; Priti Shankar (eds.). The Compiler Design Handbook: Optimizations and Machine Code Generation. Boca Raton, Florida: CRC Press. pp. 295–327. ISBN 978-0-8493-1240-3.
  • Jonathan B. Rosenberg (1996). How Debuggers Work: Algorithms, Data Structures, and Architecture. John Wiley & Sons. ISBN 0-471-14966-7.

External links edit

  • Debugging Tools for Windows
  • OpenRCE: Various Debugger Resources and Plug-ins
  • IntelliTrace MSDN, Visual Studio 2015

debugger, this, article, multiple, issues, please, help, improve, discuss, these, issues, talk, page, learn, when, remove, these, template, messages, this, article, includes, list, general, references, lacks, sufficient, corresponding, inline, citations, pleas. This article has multiple issues Please help improve it or discuss these issues on the talk page Learn how and when to remove these template messages This article includes a list of general references but it lacks sufficient corresponding inline citations Please help to improve this article by introducing more precise citations May 2013 Learn how and when to remove this template message This article relies largely or entirely on a single source Relevant discussion may be found on the talk page Please help improve this article by introducing citations to additional sources Find sources Debugger news newspapers books scholar JSTOR May 2015 This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Debugger news newspapers books scholar JSTOR April 2008 Learn how and when to remove this template message Learn how and when to remove this template message A debugger or debugging tool is a computer program used to test and debug other programs the target program The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its execution and monitor changes in computer resources that may indicate malfunctioning code Typical debugging facilities include the ability to run or halt the target program at specific points display the contents of memory CPU registers or storage devices such as disk drives and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution Winpdb debugging itselfThe 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 or the same processor Some debuggers offer two modes of operation full or partial simulation to limit this impact A trap occurs when the program cannot normally continue because of a programming bug or invalid data For example the program might have tried to use an instruction not available on the current version of the CPU or attempted to access unavailable or protected memory When the program traps or reaches a preset condition the debugger typically shows the location 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 Contents 1 Features 1 1 Record and replay debugging 1 2 Reverse debugging 1 3 Time Travel debugging 2 Language dependency 3 Memory protection 4 Hardware support for debugging 5 Debugger front ends 6 List of debuggers 7 See also 8 References 8 1 Citations 8 2 Sources 9 External linksFeatures editTypically debuggers offer a query processor a symbol resolver an expression interpreter and a debug support interface at its top level 1 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 variables 2 Some debuggers have the ability to modify program state while it is running It may also be possible to continue execution at a different location in the program to bypass a crash or logical error The same functionality which makes a debugger useful for correcting bugs allows it to be used as a software cracking tool to evade copy protection digital rights management and other software protection features It often also makes it useful as a general verification tool fault coverage and performance analyzer especially if instruction path lengths are shown 3 Early microcomputers with disk based storage often benefitted from the ability to diagnose and recover corrupted directory or registry data records to undelete files marked as deleted or to crack file password protection 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 program animation and visualization features Record and replay debugging edit Record and replay debugging 4 also known as software flight recording or program execution recording captures application state changes and stores them to disk as each instruction in a program executes The recording can then be replayed over and over and interactively debugged to diagnose and resolve defects Record and replay debugging is very useful for remote debugging and for resolving intermittent non deterministic and other hard to reproduce defects Reverse debugging edit Some debuggers include a feature called reverse debugging also known as historical debugging or backwards debugging These debuggers make it possible to step a program s execution backwards in time Various debuggers include this feature Microsoft Visual Studio 2010 Ultimate edition 2012 Ultimate 2013 Ultimate and 2015 Enterprise edition offers IntelliTrace reverse debugging for C Visual Basic NET and some other languages but not C Reverse debuggers also exist for C C Java Python Perl and other languages Some are open source some are proprietary commercial software Some reverse debuggers slow down the target by orders of magnitude but the best reverse debuggers cause a slowdown of 2 or less Reverse debugging is very useful for certain types of problems but is still not commonly used yet 5 Time Travel debugging edit In addition to the features of reverse debuggers time travel debugging also allow users to interact with the program changing the history if desired and watch how the program responds Language dependency editSome 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 assembly language subroutines and PL 1 subroutines the debugger may have to dynamically switch modes to accommodate the changes in language as they occur Memory protection editSome 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 editMost 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 debugger control In system programming allows an external hardware debugger to reprogram a system under test for example adding or removing instruction breakpoints Many systems with such ISP support also have other hardware debug support Hardware support for code and data breakpoints such as address comparators and data value comparators or with considerably more work involved page fault hardware 6 JTAG access to hardware debug interfaces such as those on ARM architecture processors or using the Nexus command set Processors used in embedded systems typically have extensive JTAG debug support Micro controllers with as few as six pins need to use low pin count substitutes for JTAG such as BDM Spy Bi Wire or debugWIRE on the Atmel AVR DebugWIRE for example uses bidirectional signaling on the RESET pin Debugger front ends editSome of the most capable and popular debuggers implement only a simple command line interface CLI often to maximize portability and minimize resource consumption Developers typically consider debugging via a graphical user interface GUI easier and more productive citation needed This is the reason for visual front ends that allow users to monitor and control subservient CLI only debuggers via graphical user interface Some GUI debugger front ends are designed to be compatible with a variety of CLI only debuggers while others are targeted at one specific debugger List of debuggers editMain article List of debuggers Some widely used debuggers are Arm DTT formerly known as Allinea DDT Eclipse debugger API used in a range of IDEs Eclipse IDE Java Nodeclipse JavaScript Firefox JavaScript debugger GDB the GNU debugger LLDB Microsoft Visual Studio Debugger Radare2 Valgrind WinDbgEarlier minicomputer debuggers include Dynamic debugging technique DDT On line Debugging Tool ODT Mainframe debuggers include CA EZTESTSee also edit nbsp Computer programming portalComparison of debuggers Core dump Kernel debugger List of tools for static code analysis Memory debugger Packet analyzer Profiling Time travel debuggingReferences editCitations edit Aggarwal and Kumar p 302 Aggarwal and Kumar 2003 p 301 Aggarwal and Kumar pp 307 312 O Callahan Robert Jones Chris Froyd Nathan Huey Kyle Noll Albert Partush Nimrod 2017 Engineering Record And Replay For Deployability Extended Technical Report arXiv 1705 05937 cs PL Philip Classen Undo Software Why is reverse debugging rarely used Programmers Stack Exchange Stack Exchange Inc Retrieved 12 April 2015 Aggarwal and Kumar 2003 pp 299 301 Sources edit Sanjeev Kumar Aggarwal M Sarath Kumar 2003 Debuggers for Programming Languages In Y N Srikant Priti Shankar eds The Compiler Design Handbook Optimizations and Machine Code Generation Boca Raton Florida CRC Press pp 295 327 ISBN 978 0 8493 1240 3 Jonathan B Rosenberg 1996 How Debuggers Work Algorithms Data Structures and Architecture John Wiley amp Sons ISBN 0 471 14966 7 External links edit nbsp Look up debugger in Wiktionary the free dictionary Debugging Tools for Windows OpenRCE Various Debugger Resources and Plug ins IntelliTrace MSDN Visual Studio 2015 Retrieved from https en wikipedia org w index php title Debugger amp oldid 1178533193, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.