Knowledge (XXG)

Breakpoint

Source 📝

403:
enabling questions about program execution to be answered in a direct way (i.e. without assumptions or guesswork). In many cases it may be the only practical method of testing obscure "event-driven" error subroutines that rarely, if ever, get executed – without the added risk of leaving temporary source changes. Manually changing the resume location within a paused program can be used to enter an otherwise rarely executed section of code (such as a specific hardware condition handler).
42: 407:
restricted by limitations of debug data known to the hardware. For instance, a software implementation can collect logical path data at program/subroutine/instruction level to considerably augment what might be stored by the particular hardware platform for inspection. The instruction set simulation method considerably reduces the overhead, compared to the (repeated) instruction replacement method, also reducing
141:, had console switches/dials that allowed breakpoints at specific instruction storage addresses and provided "single cycle" operation, permitting the contents of registers and memory to be observed directly on console lights. The advent of multitasking limited the use of this option since the entire machine was halted. 354:
This technique may be more difficult to implement in multitasking systems using shared program storage (the interrupt may occur on a different thread, requiring resurrection of the original instruction for that thread). Also, if the program resides in protected memory, overwriting of instructions may
406:
Implementing data breakpoints in software however, can greatly reduce the performance of the application being debugged – since it is using additional resources on the same processor. However, this is normally acceptable during testing and the amount of information available from the debugger is not
402:
Some debuggers allow registers or program variables in memory to be modified before resuming, effectively allowing the introduction of "hand-coded" temporary assignments for test purposes. Similarly, program instructions can often be skipped to determine the effect of changes to the program logic –
280:) information instead of interrupting execution. Usually the developer can specify a message and/or values of variables to print when execution reaches a specific point. Logpoints are an alternative to putting logging statements into the program being debugged (sometimes called 104:, etc.) to find out whether the program is functioning as expected. In practice, a breakpoint consists of one or more conditions that determine when a program's execution should be interrupted. 331:
have to implement breakpoints in software. For instruction breakpoints, this is a comparatively simple task of replacing the instruction at the location of the breakpoint by either:
120:. In the initial design of ENIAC, program flow was set by plugging cables from one unit to another. To make the program stop at a certain point, a cable was removed, called a 307:
support for breakpoints (typically instruction and data breakpoints). As an example, the x86 instruction set architecture provides hardware support for breakpoints with its
212:
Other kinds of conditions can also be used, such as the reading, writing, or modification of a specific location in an area of memory. This is often referred to as a
177:
that fully interactive, full screen debugging in multitasking environments became a reality. This also permitted step-by-step program execution in a true
220:. Many systems also support breakpoints that are only active if a condition is met (such as a variable having a certain value), usually referred to as 577: 383: 286:), and particularly helpful when changing the program is not practical (for example when debugging an external library called by the program). 153:
since the early days of computers. The core dump provided the state of the registers and memory at the exact moment of the deliberate "crash".
510: 486: 181:
manner with optional register and memory alterations simultaneously displayed. Initially this type of animation was at the level of
366:
can implement unconditional or conditional breakpoints, by simply embedding the appropriate condition tests within its own normal
190: 202: 201:
Breakpoints are most commonly used to interrupt a running program immediately before the execution of a programmer-specified
427: 415: 595: 387: 35: 350:
an invalid instruction that causes a deliberate program interrupt (that is then intercepted/handled by the debugger)
390:
that invokes an internal or external debug subroutine, is yet another common approach. This method increases the
363: 237: 80:
More generally, a breakpoint is a means of acquiring knowledge about a program during its execution. During the
430:
implements a debugger accessible from a Python program. These facilities can be and are abused to act like the
253: 93: 300: 249: 311:. Such hardware may include limitations, for example not allowing breakpoints on instructions located in 526: 340: 574: 377: 261: 58: 277: 41: 232:
When a breakpoint is hit, various tools are used to inspect the state of the program or alter it.
149:
Programmers have used machine code patches to implement single destructive breakpoints to cause a
628: 308: 257: 174: 46: 506: 482: 448: 395: 316: 312: 304: 178: 371: 66: 17: 599: 581: 169:
debugging capabilities but it was not until the early 1970s and the arrival of ubiquitous
117: 89: 398:. "Debug" options exist on some compilers to implement this technique semi-transparently. 162: 97: 622: 170: 101: 474: 182: 166: 391: 336: 233: 50: 31: 592: 426:
statement, which was originally intended to act as an instruction breakpoint.
408: 241: 186: 85: 367: 281: 150: 81: 70: 443: 431: 328: 419: 418:
their debugging functions for use by other programs. For example, some
138: 454: 380:
can effectively use the same concept as above in their program cycle.
551: 386:
all the source code with additional source statements that issue a
113: 40: 344: 394:
size and might adversely affect normal memory allocation and
327:
Without hardware support (and in multitasking environments),
53:(upper left) and watched variables (upper right) can be seen. 479:
Recoding Gender: Women's Changing Participation in Computing
610: 370:– that also naturally allows non-invasive breakpoints (on 319:
of the processor and varies from processor to processor.
335:
an instruction that calls the debugger directly (e.g. a
503:
ENIAC in Action:Making and Remaking the Modern Computer
116:, one of the earliest digital computers, by programmer 73:
purposes. It is also sometimes simply referred to as a
49:
with a program suspended at a breakpoint. Panels with
244:
calls that led to the paused instruction. A list of
501:Thomas Haigh; Mark Priestley; Crispen Rope (2016). 256:. There may also be tools to show the contents of 65:is an intentional stopping or pausing place in a 165:consoles in the 1960s allowed more interactive 593:Python Library Reference: The Python Debugger 276:is a type of breakpoint that only prints (or 27:Debugging method used in software development 8: 527:"FAQ How do I set a conditional breakpoint?" 315:. This kind of limitation is imposed by the 611:entrian.com – goto and comefrom for Python 414:Some programming language implementations 248:allows one to view the values of selected 466: 137:Early mainframe computers, such as the 7: 189:machine code, but later advanced to 205:. This is often referred to as an 25: 240:may be used to see the chain of 112:Breakpoints were invented for 1: 30:For the term in tennis, see 18:Watch (computer programming) 598:September 13, 2008, at the 550:Walsh, David (2021-03-22). 145:Non-interactive breakpoints 45:The debugging interface of 36:Breakpoint (disambiguation) 645: 580:November 29, 2011, at the 505:. MIT Press. p. 153. 29: 481:, MIT Press, p. 32, 364:instruction set simulator 94:general-purpose registers 193:source level animation. 374:programs for instance). 264:and other information. 197:Conditional breakpoints 157:Interactive breakpoints 222:conditional breakpoint 207:instruction breakpoint 54: 34:. For other uses, see 378:Interpreted languages 44: 128:Types of breakpoints 59:software development 309:x86 debug registers 133:Machine breakpoints 69:, put in place for 396:exception handlers 313:branch delay slots 88:inspects the test 55: 512:978-0-262-03398-5 449:Program animation 422:dialects have an 317:microarchitecture 260:, loaded program 179:program animation 16:(Redirected from 636: 613: 608: 602: 590: 584: 572: 566: 565: 563: 562: 556:David Walsh Blog 552:"Use Logpoints!" 547: 541: 540: 538: 537: 523: 517: 516: 498: 492: 491: 471: 425: 358:Alternatively, 283:printf debugging 228:Inspection tools 21: 644: 643: 639: 638: 637: 635: 634: 633: 619: 618: 617: 616: 609: 605: 600:Wayback Machine 591: 587: 582:Wayback Machine 573: 569: 560: 558: 549: 548: 544: 535: 533: 525: 524: 520: 513: 500: 499: 495: 489: 473: 472: 468: 463: 440: 423: 384:"Instrumenting" 325: 297: 292: 290:Implementations 270: 230: 214:data breakpoint 199: 159: 147: 135: 130: 118:Betty Holberton 110: 39: 28: 23: 22: 15: 12: 11: 5: 642: 640: 632: 631: 621: 620: 615: 614: 603: 585: 567: 542: 518: 511: 493: 487: 465: 464: 462: 459: 458: 457: 452: 446: 439: 436: 400: 399: 381: 375: 355:be prevented. 352: 351: 348: 324: 321: 296: 293: 291: 288: 269: 266: 229: 226: 198: 195: 171:video monitors 163:teletypewriter 161:The advent of 158: 155: 146: 143: 134: 131: 129: 126: 109: 106: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 641: 630: 627: 626: 624: 612: 607: 604: 601: 597: 594: 589: 586: 583: 579: 576: 575:GDB Internals 571: 568: 557: 553: 546: 543: 532: 528: 522: 519: 514: 508: 504: 497: 494: 490: 488:9780262018067 484: 480: 476: 475:Abbate, Janet 470: 467: 460: 456: 453: 450: 447: 445: 442: 441: 437: 435: 433: 429: 421: 417: 412: 410: 404: 397: 393: 389: 385: 382: 379: 376: 373: 369: 368:program cycle 365: 361: 360: 359: 356: 349: 346: 342: 338: 334: 333: 332: 330: 322: 320: 318: 314: 310: 306: 302: 294: 289: 287: 285: 284: 279: 275: 267: 265: 263: 259: 255: 251: 247: 243: 239: 235: 227: 225: 223: 219: 215: 210: 208: 204: 196: 194: 192: 188: 184: 180: 176: 173:connected to 172: 168: 164: 156: 154: 152: 144: 142: 140: 132: 127: 125: 123: 119: 115: 107: 105: 103: 99: 95: 91: 87: 83: 78: 76: 72: 68: 64: 60: 52: 48: 43: 37: 33: 19: 606: 588: 570: 559:. Retrieved 555: 545: 534:. Retrieved 531:Eclipse Wiki 530: 521: 502: 496: 478: 469: 413: 409:cache misses 405: 401: 357: 353: 326: 298: 282: 273: 271: 245: 231: 221: 217: 213: 211: 206: 200: 183:disassembled 167:command line 160: 148: 136: 121: 111: 82:interruption 79: 74: 62: 56: 434:statement. 343:in case of 337:system call 254:expressions 234:Stack trace 203:instruction 90:environment 51:stack trace 32:Break point 561:2023-04-19 536:2023-04-19 461:References 451:(Stepping) 301:processors 218:watchpoint 187:decompiled 175:mainframes 122:breakpoint 86:programmer 63:breakpoint 629:Debugging 372:read-only 329:debuggers 268:Logpoints 258:registers 250:variables 151:core dump 71:debugging 623:Category 596:Archived 578:Archived 477:(2012), 444:COMEFROM 438:See also 432:COMEFROM 388:function 323:Software 305:hardware 303:include 295:Hardware 274:logpoint 242:function 236:of each 100:, logs, 420:FORTRAN 262:modules 246:watches 216:, or a 139:IBM/360 108:History 67:program 47:Eclipse 509:  485:  455:SIMMON 428:Python 416:expose 392:binary 278:"logs" 238:thread 98:memory 84:, the 339:, or 299:Many 114:ENIAC 102:files 75:pause 507:ISBN 483:ISBN 347:) or 341:int3 252:and 61:, a 362:an 345:x86 191:HLL 185:or 57:In 625:: 554:. 529:. 424:AT 411:. 272:A 224:. 209:. 124:. 96:, 77:. 564:. 539:. 515:. 92:( 38:. 20:)

Index

Watch (computer programming)
Break point
Breakpoint (disambiguation)

Eclipse
stack trace
software development
program
debugging
interruption
programmer
environment
general-purpose registers
memory
files
ENIAC
Betty Holberton
IBM/360
core dump
teletypewriter
command line
video monitors
mainframes
program animation
disassembled
decompiled
HLL
instruction
Stack trace
thread

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