BUG: Break When Expression Has Changed Fails With FloatsLast reviewed: July 22, 1997Article ID: Q117311 |
4.10 | 1.00 1.50 1.50.01 4.10MS-DOS | WINDOWS kbtool kbbuglist The information in this article applies to:
SYMPTOMS"Break When Expression Has Changed" breakpoints set on float or pointer to float variables may not function correctly, or the break may occur at the wrong location. This happens in both CodeView and the Visual C++ integrated debugger.
STATUSMicrosoft has confirmed this to be a problem in the debugging information generated by the compiler. We will post new information here in the Knowledge Base as it becomes available. To work around the problem, use CodeView's memory window to view the contents of your variables. When their contents change, CodeView highlights the changed bytes.
MORE INFORMATIONThe sample program below demonstrates the bug. Build a debug version of a DOS executable using the code below. Debug the application using CodeView for DOS. Step through the application to line 7 in the debugger, set a "Break When Expression Has Changed" breakpoint on pf, and hit F5 to continue the program. The breakpoint will be missed.
Sample Code
/* Compile options needed: /Zi /Od */ void main( void ){ float f, *pf; int i; f = 1.1f; i = 2; pf = &f; i = 3;} To view the contents of pf using the memory window, as the workaround states in the status section of this article, step to the first line of code in main(). Open the register window to get both the segment from the SS register, since the variable is local, and the value of BP. To calculate the memory offset of pf look at the locals window to get the offset from BP. In this case it is OxA. Subtract the value of the offset from the value of BP. Then using memory window number 1 change the current address to the SS:BP-offset by typing over the current address. Continue stepping through the code. When the memory location, currently displayed in the memory window, of pf changes it will be highlighted.
|
Additional reference words: 4.10 1.50 1.00 1.50.01
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |