Значение, не назначенное для обработки при сборке с использованием Release Configuration в VS2010 - PullRequest
0 голосов
/ 29 апреля 2011

Я использую VS2010, и я столкнулся со следующей проблемой:

HWND handle = NULL;
handle = pPlatform->getWindowHandle(); 

Когда я отлаживаю этот код в конфигурации отладки, «дескриптору» присваивается правильное значение, но когда я отлаживаю его в «сборке выпуска», дескриптор остается равным NULL.

getWindowHandle () - это простой метод доступа:

HWND PlatformManager::getWindowHandle()
{ 
   return windowHandle;
}

"windowHandle" имеет значение, отличное от NULL, при отладке в сборке отладки / выпуска.

Спасибо за помощь.

1 Ответ

0 голосов
/ 29 апреля 2011

Сборка выпуска включает в себя оптимизации, и иногда отладчик может видеть неправильное значение для переменных, которые оптимизируются.Это затрудняет отладку сборок Release, но именно поэтому они не называются сборками Debug.:)

Короче говоря, если вам просто нужно отладить сборку релиза, но ваш отладчик играет на вас хитрость, вы всегда можете прибегнуть к старой доброй отладке printf .Добавьте несколько функций трассировки, например, с OutputDebugString, и посмотрите, действительно ли handle останется NULL в этой точке.

char buf [256];Дескриптор HWND = NULL;handle = pPlatform-> getWindowHandle ();OutputDebugStringA (_itoa ((int) handle, buf, 10));

...