Microsoft KB Archive/43648

From BetaArchive Wiki
< Microsoft KB Archive
Revision as of 13:14, 21 July 2020 by X010 (talk | contribs) (Text replacement - "&" to "&")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Base


Returning Control to CodeView

Article ID: 43648

Article Last Modified on 10/23/2003



APPLIES TO

  • Microsoft CodeView 4.1
  • Microsoft CodeView 3.0
  • Microsoft CodeView 3.0
  • Microsoft CodeView 3.0
  • Microsoft CodeView 4.0
  • Microsoft CodeView 4.01
  • Microsoft CodeView 4.01
  • Microsoft CodeView 4.1
  • Microsoft CodeView 3.0
  • Microsoft CodeView 3.05
  • Microsoft CodeView 3.06
  • Microsoft CodeView 3.07
  • Microsoft CodeView 4.0
  • Microsoft CodeView 4.01
  • Microsoft CodeView 4.1



This article was previously published under Q43648

SUMMARY

The following are two software methods of returning control to CodeView during program execution:

  1. Use the debug interrupt, Interrupt 3, in your code. Interrupt 3 is called a microprocessor (or logical) interrupt. It is the interrupt that CodeView uses to make breakpoints. Place an Interrupt 3 into your code in selected places where you want to return control to CodeView.

    In a program designed for the Microsoft Windows operating system, use the DebugBreak() function to insert an Interrupt 3 in the code. Using DebugBreak() instead of calling Interrupt 3 directly through assembly code is especially important in applications designed for Win32s.

    The following sample program demonstrates the technique. Note that you could easily construct a macro to insert breakpoints where desired, and you could use inline assembly instead of the int86() function:

          #include <dos.h>
          #include <stdio.h>
    
          void main()
          {
             union REGS  inregs;
             int         i = 1;
    
             for ( ; ; )
                {
                 printf("Loop iteration: %d\n", i++);
                 int86(0x03, &inregs, &inregs);
                }
          }
                            
  2. When CodeView runs in MS-DOS, you can use the CTRL+C and CTRL+BREAK key combinations to return control to CodeView. This method can be useful to break out of a program that is running or that has locked up. When CodeView regains control, the displayed debugging information depends on when you type the key combination and what caused the problem with the application (for example, an infinite loop, a bad pointer, and so on). If desired, continue execution in the normal manner (press F5, F8, or F10, and so on).

    MS-DOS checks for the CTRL+C key combination during most I/O operations. If the system break flag is on (the AUTOEXEC.BAT file includes the command BREAK ON), MS-DOS checks for CTRL+C in other operations as well. If you press CTRL+C when an application is executing in an infinite loop and MS-DOS interrupts are disabled, CodeView may not obtain control.

    In OS/2, CTRL+BREAK does not return control to CodeView. You can use CTRL+C to terminate an application, but you cannot continue debugging after CTRL+C as you can in MS-DOS.

    When you debug an application in 16-bit Windows, CTRL+ALT+SYSRQ returns control to the debugger. When you debug a Win32s program, CTRL+ALT+F11 returns control to the debugger.

    No hardware interrupt returns control to CodeView.



Additional query words: kbinf 3.00 3.50 4.00 4.10 CONTROL-C CONTROL+C CONTROL+BREAK INT3

Keywords: kbbug kbdebug KB43648