Knowledge

Debugger

Source 📝

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:)

Index

Symbolic debugger
improve it
talk page
Learn how and when to remove these messages
references
inline citations
improve
introducing
Learn how and when to remove this message

single source
talk page
improve this article
introducing citations to additional sources
"Debugger"
news
newspapers
books
scholar
JSTOR

verification
improve this article
adding citations to reliable sources
"Debugger"
news
newspapers
books
scholar
JSTOR

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.