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:
- Microsoft C for MS-DOS, versions 6.0, 6.0a, and 6.0ax
- Microsoft C for OS/2, versions 6.0 and 6.0a
- Microsoft C/C++ for MS-DOS, versions 7.0
- Microsoft Visual C++ for Windows, versions 1.0 and 1.5
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.
The compiler is not generating the correct line number information.
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)
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.
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.
/* 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