Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Debugger
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Features== Typically, debuggers offer a query processor, a symbol resolver, an expression interpreter, and a debug support interface at its top level.<ref>Aggarwal and Kumar, p. 302.</ref> 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.<ref>Aggarwal and Kumar 2003, p. 301.</ref> Some debuggers have the ability to modify the 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 [[Profiling (computer programming)|performance analyser]], especially if [[instruction path length]]s are shown.<ref>Aggarwal and Kumar, pp. 307-312.</ref> 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 (debugger)|dbx]], provide console-based [[command line interface]]s. [[Debugger front-end]]s are popular extensions to debugger engines that provide [[Integrated Developer Environment|IDE]] integration, [[program animation]], and visualization features. === Record and replay debugging === [[Record and replay debugging]],<ref>{{cite arXiv |first1=Robert |last1=O'Callahan |first2=Chris |last2=Jones |first3=Nathan |last3=Froyd |first4=Kyle |last4=Huey |first5=Albert |last5=Noll |first6=Nimrod |last6=Partush |title=Engineering Record And Replay For Deployability Extended Technical Report |year=2017 |class=cs.PL |eprint=1705.05937 }}</ref> 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. ==={{anchor|Reverse debugging}}Reverse debugging=== <!-- At least six pages redirect to this section. Please do not remove the section or rename the anchor, without first getting consensus on the talk page. --> 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.<ref>{{cite web|author1=Philip Claรen|author2=Undo Software|title=Why is reverse debugging rarely used?|url=http://programmers.stackexchange.com/questions/181527/why-is-reverse-debugging-rarely-used|work=Programmers Stack Exchange|publisher=Stack Exchange, Inc|access-date=12 April 2015}}</ref> ==={{anchor|Time Travel debugging}}Time travel debugging=== 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.
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Debugger
(section)
Add topic