ID: Q116493
4.10 | 4.10 1.00 1.50 MS-DOS | WINDOWS kbtool kbbuglist
The information in this article applies to:
Changing the radix used in either CodeView or the Visual Workbench integrated debugger from 16 (hexadecimal format) to 10 (decimal format) may cause the debugger to display inaccurate values in the watch window. This occurs when a variable has already been displayed first using the hexadecimal radix.
Removing the variable from the watch window, then adding it back to the watch window, causes the debugger to display the correct values using the new radix.
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This is not a problem in Visual C++, 32-bit Edition. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
You can use the sample code below to illustrate this problem in CodeView for MS-DOS. Build a debug version of the program and follow these steps:
1. Open the project under CodeView for Windows.
2. In the command window, type the following commands:
n 16
w? buf
This sets the radix to 16 (hexadecimal format) and places the variable
"buf" in the watch window.
3. Expand the buf variable in the watch window by either double-clicking on
the variable or moving the cursor to that line and pressing Return. The
watch window should then display the correct values for buf.
4. In the command window, type the following command:
n 10
This switches the radix back to decimal format. Notice in the watch
window that the character array values after 10 have now changed and are
not correct.
5. Move the cursor to the line in the watch window containing buf and then
press CTRL+Y to delete buf. Now reenter buf into the watch window and
expand it. The values displayed are now correct.
To illustrate this behavior under Windows, rebuild the program as a
QuickWin application and follow the steps above using CodeView for Windows.
To reproduce the problem in the Visual Workbench integrated debugger, first
check the "Hexadecimal Display" check box in the Debug dialog box by
choosing Debug from the Options menu in the main menu.
/* Compile options needed: /Zi /Od */
#include <stdio.h>
char buf[] = {'\001','\002','\003','\004','\005','\006','\007',
'\010','\011','\012','\013','\014','\015','\016',
'\017','\020'};
/* NOTE: The buf declaration simply inserts values 1-16 in */
/* octal. You may use whatever characters you like for this */
/* test; we are using these to better illustrate the problem.*/
void main(void)
{
printf("Hello World.\n");
}
Additional reference words: 1.00 1.50 4.10
KBCategory: kbtool kbbuglist
KBSubcategory: CvwIss WBDebug
Keywords : kb16bitonly
Last Reviewed: July 23, 1997