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