调试时,看不到局部变量,什么原因。该如何处理
调试时,看不到局部变量,什么原因。
在看 《Windows程序设计》,
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR szCmdLine,int iCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.lpszClassName = szAppName;
wndclass.lpszMenuName = NULL;
DWORD dwVersion;
dwVersion = GetVersion(); //???????
if (!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT( "This Program requires Windows NT! "),
szAppName,MB_ICONERROR);
}
hInst = hInstance;
hwnd = CreateWindow(szAppName,szCaption,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg,hwnd,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
在dwVersion = GetVersion();处设置断点,但调试时根本就没有dwVersion,只看到hInstance,hPrevInstance等等。
------解决方案--------------------
dwVersion = GetVersion();
断点应该设在这句后面。
还有一种可能,你调试的是Release版,没打开调试信息
在看 《Windows程序设计》,
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR szCmdLine,int iCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.lpszClassName = szAppName;
wndclass.lpszMenuName = NULL;
DWORD dwVersion;
dwVersion = GetVersion(); //???????
if (!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT( "This Program requires Windows NT! "),
szAppName,MB_ICONERROR);
}
hInst = hInstance;
hwnd = CreateWindow(szAppName,szCaption,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg,hwnd,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
在dwVersion = GetVersion();处设置断点,但调试时根本就没有dwVersion,只看到hInstance,hPrevInstance等等。
------解决方案--------------------
dwVersion = GetVersion();
断点应该设在这句后面。
还有一种可能,你调试的是Release版,没打开调试信息