66:
1082:(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.
1369:
1066:, 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.
223:
128:
25:
885:
925:(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.
915:
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
916:
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.
1000:, and tracking the values of variables. 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.
1027:
are shown. 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.
979:
Typically, debuggers offer a query processor, a symbol resolver, an expression interpreter, and a debug support interface at its top level. Debuggers also offer more sophisticated functions such as running a program
1161:
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
1168:
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.
1078:", 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.
1485:
O'Callahan, Robert; Jones, Chris; Froyd, Nathan; Huey, Kyle; Noll, Albert; Partush, Nimrod (2017). "Engineering Record And Replay For
Deployability Extended Technical Report".
1245:
are programs specifically designed to be cracked or debugged. These programs allow those with debuggers to practice their debugging ability without getting into legal trouble.
1102:
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
871:
1233:. 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.
1229:(GUI) easier and more productive. This is the reason for visual front-ends, that allow users to monitor and control subservient CLI-only debuggers via
825:
971:(unless it also has online access to the original source code and can display the appropriate section of code from the assembly or compilation).
1158:
792:
864:
644:
947:. When the program "traps" or reaches a preset condition, the debugger typically shows the location in the original code if it is a
888:
138:
1398:
782:
634:
1547:
Sanjeev Kumar
Aggarwal; M. Sarath Kumar (2003). "Debuggers for Programming Languages". In Y.N. Srikant; Priti Shankar (eds.).
1560:
1507:
936:
or invalid data. For example, the program might have tried to use an instruction not available on the current version of the
857:
757:
513:
498:
777:
815:
1241:
Debugging is often used to illegally crack or pirate software, which is usually illegal even when done non-maliciously.
956:
724:
488:
287:
196:
1221:
Some of the most capable and popular debuggers implement only a simple command line interface (CLI)—often to maximize
1587:
1114:
subroutines, the debugger may have to dynamically switch modes to accommodate the changes in language as they occur.
591:
324:
306:
259:
168:
109:
87:
52:
1094:
also allow users to interact with the program, changing the history if desired, and watch how the program responds.
80:
1413:
1295:
1048:
1020:
714:
709:
465:
1640:
1197:
843:
266:
175:
734:
447:
427:
244:
153:
596:
533:
523:
473:
820:
548:
364:
996:) (pausing the program to examine the current state) at some event or specified instruction by means of a
273:
182:
1374:
1334:
1063:
639:
611:
1015:, and other software protection features. It often also makes it useful as a general verification tool,
762:
606:
493:
483:
422:
1012:
921:
528:
508:
255:
240:
164:
38:
1230:
1226:
1175:, such as address comparators and data value comparators or, with considerably more work involved,
1003:
The same functionality which makes a debugger useful for correcting bugs allows it to be used as a
669:
538:
518:
74:
1196:
Micro controllers with as few as six pins need to use low pin-count substitutes for JTAG, such as
1383:
1079:
1024:
937:
797:
679:
558:
432:
233:
1134:
environments where memory is dynamically allocated from memory 'pools' on a task by task basis.
1340:
1131:
1040:
739:
649:
601:
543:
91:
1428:
1418:
1193:
command set. Processors used in embedded systems typically have extensive JTAG debug support.
1165:
1091:
563:
379:
369:
1579:
981:
659:
503:
437:
404:
384:
345:
1614:
8:
654:
573:
399:
1635:
1630:
1486:
1269:
1044:
772:
280:
189:
1583:
1572:
1556:
1254:
1123:
1107:
1052:
1004:
989:
941:
1604:
1190:
1186:
929:
908:
904:
729:
692:
674:
664:
389:
149:
1408:
1403:
1393:
1290:
1272:
debugger API used in a range of IDEs: Eclipse IDE (Java), Nodeclipse (JavaScript)
1225:
and minimize resource consumption. Developers typically consider debugging via a
1127:
1008:
944:
616:
568:
452:
374:
1036:
1016:
1624:
359:
44:
1423:
1327:
1320:
1284:
933:
442:
1263:
1201:
1142:
Most modern microprocessors have at least one of these features in their
968:
1212:. DebugWIRE, for example, uses bidirectional signaling on the RESET pin.
1549:
The
Compiler Design Handbook: Optimizations and Machine Code Generation
1278:
1176:
1172:
1143:
997:
1552:
1388:
1354:
1347:
1209:
1205:
1151:
912:
394:
1368:
222:
127:
1491:
1305:
767:
719:
699:
1574:
How
Debuggers Work: Algorithms, Data Structures, and Architecture
1300:
1275:
1242:
1222:
932:" occurs when the program cannot normally continue because of a
1315:
1310:
884:
478:
1103:
919:
The code to be examined might alternatively be running on an
553:
1484:
1150:
Hardware support for single-stepping a program, such as the
1182:
1122:
Some debuggers also incorporate memory protection to avoid
1111:
787:
145:
1609:
1032:
1047:
are popular extensions to debugger engines that provide
1505:
16:
Computer program used to test and debug other programs
1185:
access to hardware debug interfaces such as those on
1364:
247:. Unsourced material may be challenged and removed.
1571:
1090:In addition to the features of reverse debuggers,
1137:
1622:
1610:OpenRCE: Various Debugger Resources and Plug-ins
1159:Popek and Goldberg virtualization requirements
1058:
1236:
865:
154:introducing citations to additional sources
1031:Most mainstream debugging engines, such as
53:Learn how and when to remove these messages
872:
858:
1490:
1074:Some debuggers include a feature called "
325:Learn how and when to remove this message
307:Learn how and when to remove this message
110:Learn how and when to remove this message
1085:
883:
144:Relevant discussion may be found on the
73:This article includes a list of general
1508:"Why is reverse debugging rarely used?"
1623:
1399:List of tools for static code analysis
1216:
1097:
940:or attempted to access unavailable or
826:Electrical and electronics engineering
1532:Aggarwal and Kumar 2003, pp. 299-301.
1130:. This may be extremely important in
1248:
1117:
1069:
245:adding citations to reliable sources
216:
121:
59:
18:
1171:Hardware support for code and data
957:integrated development environments
13:
1157:An instruction set that meets the
79:it lacks sufficient corresponding
14:
1652:
1598:
752:Standards and bodies of knowledge
34:This article has multiple issues.
1475:Aggarwal and Kumar, pp. 307-312.
1466:Aggarwal and Kumar 2003, p. 301.
1367:
1296:Microsoft Visual Studio Debugger
1259:Some widely used debuggers are:
221:
137:relies largely or entirely on a
126:
64:
23:
1266:, formerly known as Allinea DDT
844:Outline of software development
232:needs additional citations for
42:or discuss these issues on the
1570:Jonathan B. Rosenberg (1996).
1526:
1506:Philip Claßen; Undo Software.
1499:
1478:
1469:
1460:
1451:
1138:Hardware support for debugging
1055:, and visualization features.
1:
1439:
1444:
7:
1605:Debugging Tools for Windows
1457:Aggarwal and Kumar, p. 302.
1375:Computer programming portal
1360:
1335:Dynamic debugging technique
1064:Record and replay debugging
1059:Record and replay debugging
974:
10:
1657:
1539:
1512:Programmers Stack Exchange
1252:
1237:Ethical or legal debugging
1146:to make debugging easier:
607:Software quality assurance
1013:digital rights management
967:it shows the line in the
965:machine-language debugger
922:instruction set simulator
1617:MSDN, Visual Studio 2015
1231:graphical user interface
1227:graphical user interface
1189:processors or using the
1039:, provide console-based
1025:instruction path lengths
592:Configuration management
1551:. Boca Raton, Florida:
1384:Comparison of debuggers
1080:Microsoft Visual Studio
1041:command line interfaces
955:, commonly now seen in
816:Artificial intelligence
94:more precise citations.
1641:Utility software types
1341:On-line Debugging Tool
1132:transaction processing
892:
740:Infrastructure as code
586:Supporting disciplines
1580:John Wiley & Sons
1514:. Stack Exchange, Inc
1429:Rubber duck debugging
1419:Time travel debugging
1166:In-system programming
1092:time travel debugging
1086:Time Travel debugging
949:source-level debugger
887:
597:Deployment management
1555:. pp. 295–327.
1021:performance analyzer
417:Paradigms and models
346:Software development
241:improve this article
150:improve this article
1350:debuggers include:
1330:debuggers include:
1217:Debugger front-ends
1098:Language dependency
1045:Debugger front-ends
340:Part of a series on
1287:- the GNU debugger
1124:storage violations
961:low-level debugger
893:
735:Release automation
612:Project management
1562:978-0-8493-1240-3
1255:List of debuggers
1249:List of debuggers
1118:Memory protection
1108:assembly language
1076:reverse debugging
1070:Reverse debugging
1053:program animation
1005:software cracking
990:program animation
953:symbolic debugger
882:
881:
773:ISO/IEC standards
335:
334:
327:
317:
316:
309:
291:
215:
214:
200:
120:
119:
112:
57:
1648:
1593:
1577:
1566:
1533:
1530:
1524:
1523:
1521:
1519:
1503:
1497:
1496:
1494:
1482:
1476:
1473:
1467:
1464:
1458:
1455:
1377:
1372:
1371:
1187:ARM architecture
1110:subroutines and
1023:, especially if
905:computer program
891:debugging itself
874:
867:
860:
821:Computer science
730:Build automation
337:
336:
330:
323:
312:
305:
301:
298:
292:
290:
249:
225:
217:
210:
207:
201:
199:
158:
130:
122:
115:
108:
104:
101:
95:
90:this article by
81:inline citations
68:
67:
60:
49:
27:
26:
19:
1656:
1655:
1651:
1650:
1649:
1647:
1646:
1645:
1621:
1620:
1601:
1596:
1590:
1569:
1563:
1546:
1542:
1537:
1536:
1531:
1527:
1517:
1515:
1504:
1500:
1483:
1479:
1474:
1470:
1465:
1461:
1456:
1452:
1447:
1442:
1433:
1409:Packet analyzer
1404:Memory debugger
1394:Kernel debugger
1373:
1366:
1363:
1257:
1251:
1239:
1219:
1140:
1128:buffer overflow
1120:
1100:
1088:
1072:
1061:
1009:copy protection
986:single-stepping
977:
934:programming bug
878:
849:
848:
839:
831:
830:
811:
803:
802:
753:
745:
744:
695:
685:
684:
630:
622:
621:
617:User experience
587:
579:
578:
469:
458:
457:
418:
410:
409:
355:
354:Core activities
331:
320:
319:
318:
313:
302:
296:
293:
250:
248:
238:
226:
211:
205:
202:
159:
157:
143:
131:
116:
105:
99:
96:
86:Please help to
85:
69:
65:
28:
24:
17:
12:
11:
5:
1654:
1644:
1643:
1638:
1633:
1619:
1618:
1612:
1607:
1600:
1599:External links
1597:
1595:
1594:
1588:
1567:
1561:
1543:
1541:
1538:
1535:
1534:
1525:
1498:
1477:
1468:
1459:
1449:
1448:
1446:
1443:
1441:
1438:
1437:
1436:
1432:
1431:
1426:
1421:
1416:
1411:
1406:
1401:
1396:
1391:
1386:
1380:
1379:
1378:
1362:
1359:
1358:
1357:
1345:
1344:
1338:
1324:
1323:
1318:
1313:
1308:
1303:
1298:
1293:
1288:
1282:
1273:
1267:
1253:Main article:
1250:
1247:
1238:
1235:
1218:
1215:
1214:
1213:
1194:
1180:
1169:
1163:
1155:
1139:
1136:
1119:
1116:
1099:
1096:
1087:
1084:
1071:
1068:
1060:
1057:
1017:fault coverage
1007:tool to evade
976:
973:
901:debugging tool
880:
879:
877:
876:
869:
862:
854:
851:
850:
847:
846:
840:
837:
836:
833:
832:
829:
828:
823:
818:
812:
809:
808:
805:
804:
801:
800:
795:
790:
785:
780:
775:
770:
765:
763:IEEE standards
760:
754:
751:
750:
747:
746:
743:
742:
737:
732:
727:
722:
717:
712:
707:
702:
696:
691:
690:
687:
686:
683:
682:
677:
672:
667:
662:
657:
652:
647:
642:
637:
631:
628:
627:
624:
623:
620:
619:
614:
609:
604:
599:
594:
588:
585:
584:
581:
580:
577:
576:
571:
566:
561:
556:
551:
546:
541:
536:
531:
526:
521:
516:
511:
506:
501:
496:
491:
486:
481:
476:
470:
468:and frameworks
464:
463:
460:
459:
456:
455:
450:
445:
440:
435:
430:
425:
419:
416:
415:
412:
411:
408:
407:
402:
397:
392:
387:
382:
377:
372:
367:
362:
356:
353:
352:
349:
348:
342:
341:
333:
332:
315:
314:
229:
227:
220:
213:
212:
148:. Please help
134:
132:
125:
118:
117:
72:
70:
63:
58:
32:
31:
29:
22:
15:
9:
6:
4:
3:
2:
1653:
1642:
1639:
1637:
1634:
1632:
1629:
1628:
1626:
1616:
1613:
1611:
1608:
1606:
1603:
1602:
1591:
1589:0-471-14966-7
1585:
1581:
1576:
1575:
1568:
1564:
1558:
1554:
1550:
1545:
1544:
1529:
1513:
1509:
1502:
1493:
1488:
1481:
1472:
1463:
1454:
1450:
1435:
1434:
1430:
1427:
1425:
1422:
1420:
1417:
1415:
1412:
1410:
1407:
1405:
1402:
1400:
1397:
1395:
1392:
1390:
1387:
1385:
1382:
1381:
1376:
1370:
1365:
1356:
1353:
1352:
1351:
1349:
1342:
1339:
1336:
1333:
1332:
1331:
1329:
1322:
1319:
1317:
1316:x64dbg/x32dbg
1314:
1312:
1309:
1307:
1304:
1302:
1299:
1297:
1294:
1292:
1289:
1286:
1283:
1280:
1277:
1274:
1271:
1268:
1265:
1262:
1261:
1260:
1256:
1246:
1244:
1234:
1232:
1228:
1224:
1211:
1207:
1203:
1199:
1195:
1192:
1188:
1184:
1181:
1178:
1174:
1170:
1167:
1164:
1160:
1156:
1153:
1149:
1148:
1147:
1145:
1135:
1133:
1129:
1125:
1115:
1113:
1109:
1105:
1095:
1093:
1083:
1081:
1077:
1067:
1065:
1056:
1054:
1051:integration,
1050:
1046:
1042:
1038:
1034:
1029:
1026:
1022:
1018:
1014:
1010:
1006:
1001:
999:
995:
992:), stopping (
991:
987:
983:
972:
970:
966:
962:
959:. If it is a
958:
954:
950:
946:
943:
939:
935:
931:
926:
924:
923:
917:
914:
910:
906:
902:
898:
890:
886:
875:
870:
868:
863:
861:
856:
855:
853:
852:
845:
842:
841:
835:
834:
827:
824:
822:
819:
817:
814:
813:
807:
806:
799:
796:
794:
791:
789:
786:
784:
781:
779:
776:
774:
771:
769:
766:
764:
761:
759:
756:
755:
749:
748:
741:
738:
736:
733:
731:
728:
726:
723:
721:
718:
716:
713:
711:
708:
706:
703:
701:
698:
697:
694:
689:
688:
681:
678:
676:
673:
671:
668:
666:
663:
661:
658:
656:
653:
651:
648:
646:
643:
641:
638:
636:
633:
632:
626:
625:
618:
615:
613:
610:
608:
605:
603:
602:Documentation
600:
598:
595:
593:
590:
589:
583:
582:
575:
572:
570:
567:
565:
562:
560:
557:
555:
552:
550:
547:
545:
542:
540:
537:
535:
532:
530:
527:
525:
522:
520:
517:
515:
512:
510:
507:
505:
502:
500:
497:
495:
492:
490:
487:
485:
482:
480:
477:
475:
472:
471:
467:
466:Methodologies
462:
461:
454:
451:
449:
446:
444:
441:
439:
436:
434:
431:
429:
426:
424:
421:
420:
414:
413:
406:
403:
401:
398:
396:
393:
391:
388:
386:
383:
381:
378:
376:
373:
371:
368:
366:
363:
361:
360:Data modeling
358:
357:
351:
350:
347:
344:
343:
339:
338:
329:
326:
311:
308:
300:
289:
286:
282:
279:
275:
272:
268:
265:
261:
258: –
257:
253:
252:Find sources:
246:
242:
236:
235:
230:This article
228:
224:
219:
218:
209:
198:
195:
191:
188:
184:
181:
177:
174:
170:
167: –
166:
162:
161:Find sources:
155:
151:
147:
141:
140:
139:single source
135:This article
133:
129:
124:
123:
114:
111:
103:
93:
89:
83:
82:
76:
71:
62:
61:
56:
54:
47:
46:
41:
40:
35:
30:
21:
20:
1615:IntelliTrace
1573:
1548:
1528:
1516:. Retrieved
1511:
1501:
1480:
1471:
1462:
1453:
1424:GNU Debugger
1346:
1328:minicomputer
1325:
1321:Cheat Engine
1258:
1240:
1220:
1141:
1121:
1101:
1089:
1075:
1073:
1062:
1030:
1002:
993:
985:
982:step by step
978:
964:
960:
952:
948:
927:
920:
918:
900:
896:
894:
720:UML Modeling
715:GUI designer
704:
380:Construction
370:Requirements
321:
303:
294:
284:
277:
270:
263:
251:
239:Please help
234:verification
231:
203:
193:
186:
179:
172:
160:
136:
106:
97:
78:
50:
43:
37:
36:Please help
33:
1223:portability
1202:Spy-Bi-Wire
1173:breakpoints
969:disassembly
438:Prototyping
433:Incremental
405:Maintenance
385:Engineering
92:introducing
1625:Categories
1492:1705.05937
1440:References
1279:JavaScript
1177:page fault
1144:CPU design
1106:but calls
998:breakpoint
810:Glossaries
400:Deployment
297:April 2008
267:newspapers
256:"Debugger"
176:newspapers
165:"Debugger"
75:references
39:improve it
1636:Debugging
1631:Debuggers
1553:CRC Press
1445:Citations
1414:Profiling
1389:Core dump
1355:CA/EZTEST
1348:Mainframe
1243:Crackme's
1210:Atmel AVR
1206:debugWIRE
1179:hardware.
1152:trap flag
942:protected
629:Practices
453:Waterfall
428:Cleanroom
395:Debugging
365:Processes
146:talk page
45:talk page
1518:12 April
1361:See also
1326:Earlier
1306:Valgrind
1281:debugger
1162:control.
1126:such as
994:breaking
975:Features
907:used to
897:debugger
838:Outlines
768:ISO 9001
710:Profiler
705:Debugger
700:Compiler
675:Stand-up
206:May 2015
100:May 2013
1540:Sources
1301:Radare2
1276:Firefox
1270:Eclipse
1264:Arm DTT
1208:on the
509:Lean SD
448:V model
390:Testing
281:scholar
190:scholar
88:improve
1586:
1559:
1311:WinDbg
1019:, and
945:memory
889:Winpdb
783:SWEBOK
504:Kanban
479:DevOps
443:Spiral
375:Design
283:
276:
269:
262:
254:
192:
185:
178:
171:
163:
77:, but
1487:arXiv
1343:(ODT)
1337:(DDT)
1204:, or
1191:Nexus
1104:COBOL
963:or a
913:debug
903:is a
778:PMBOK
693:Tools
554:SEMAT
549:Scrum
423:Agile
288:JSTOR
274:books
197:JSTOR
183:books
1584:ISBN
1557:ISBN
1520:2015
1291:LLDB
1183:JTAG
1112:PL/1
1035:and
930:trap
911:and
909:test
793:IREB
788:ITIL
758:CMMI
635:ATDD
544:SAFe
514:LeSS
489:DSDM
260:news
169:news
1285:GDB
1198:BDM
1049:IDE
1037:dbx
1033:gdb
988:or
951:or
938:CPU
928:A "
899:or
798:OMG
725:IDE
680:TDD
670:SBE
660:DDD
645:CCO
640:BDD
564:TSP
559:TDD
539:RUP
534:RAD
529:PSP
524:MSF
519:MDD
499:IID
494:FDD
484:DAD
474:ASD
243:by
152:by
1627::
1582:.
1578:.
1510:.
1200:,
1043:.
1011:,
895:A
665:PP
655:CD
650:CI
574:XP
569:UP
48:.
1592:.
1565:.
1522:.
1495:.
1489::
1154:.
984:(
873:e
866:t
859:v
328:)
322:(
310:)
304:(
299:)
295:(
285:·
278:·
271:·
264:·
237:.
208:)
204:(
194:·
187:·
180:·
173:·
156:.
142:.
113:)
107:(
102:)
98:(
84:.
55:)
51:(
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.