Knowledge

Debugger

Source 📝

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

Index

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
Learn how and when to remove this message

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