BUG: Compiler Fails to Generate Symbolic Info for ELSE IF

ID: Q65744

6.00 6.00a 6.00ax 7.00 | 6.00 6.00a | 1.00 1.50

MS-DOS                 | OS/2       | WINDOWS
kbtool kbbuglist

The information in this article applies to:

SYMPTOMS

If the sample code below is compiled for debugging (/Zi) with the products listed above, the debugger does not stop at breakpoints placed on the ELSE IF line of code. Also, any attempt to step onto the line using the trace or step command will skip over this line as if no executable code was associated with it.

CAUSE

The compiler is not generating the correct line number information.

RESOLUTION

To work around the problem, place the "else" and "if" on separate lines. For example:

   else
      if (i==7)

instead of

   else if (i==7)

STATUS

Microsoft has confirmed this to be a problem in the products listed at the beginning of this article. It is not likely that the behavior will change because the problem is easy to work around and is not common.

MORE INFORMATION

As can be seen in the debugger by switching into mixed source/assembly mode, there is executable code associated with the ELSE IF statement. And, if a breakpoint is placed on one of the assembly instructions associated with the ELSE IF line, execution can stop on that instruction demonstrating that the code is being executed.

Sample Code

/* Compile options needed: /Zi /Od
*/ 

void main(void)
{
   int i=100;
   if (i==2);
   else if(i==7);  /* cannot stop on this line */ 
}

Additional reference words: 1.00 1.50 6.00 6.00a 6.00ax 7.00 8.00 8.00c KBCategory: kbtool kbbuglist KBSubcategory: CLIss Keywords : kb16bitonly

Last Reviewed: July 18, 1997