BUG: Debugger Does Not Step Over to __finally Code Block (168379)



The information in this article applies to:

  • The Integrated Debugger, when used with:
    • Microsoft Visual C++, 32-bit Enterprise Edition 5.0
    • Microsoft Visual C++, 32-bit Enterprise Edition 6.0
    • Microsoft Visual C++, 32-bit Professional Edition 5.0
    • Microsoft Visual C++, 32-bit Professional Edition 6.0
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
    • Microsoft Visual C++ .NET (2002)
    • Microsoft Visual C++ .NET (2003)

This article was previously published under Q168379

SYMPTOMS

The debugger does not Step-Over to code in __finally block from a __try block.

CAUSE

The __finally code is executed via a "call" instead of a "jmp instruction.

RESOLUTION

The workaround is to do a Step-Into (F11 key) instead of Step-Over (F10 key) in the debugger.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Steps to Reproduce Behavior



Compile the following code with debug information.

    #include <iostream.h>

    void main ()
    {
   int counter=0;

    __try {

   counter++;//SET A BREAKPOINT HERE
   cout << "In try block" << endl;

          }

    __finally
          {
      counter++;
      cout << "In finally block" << endl;
          }

    cout << "Exit, counter=" << counter << endl;

    }
				


Set a breakpoint on the line shown above. Start the debugger with Debug Go or by pressing the F5 key. Step-Over (or, press F10) from that point onward. The debugger exits the program without going to the __finally block.

Modification Type:MajorLast Reviewed:9/23/2003
Keywords:kbBug KB168379