#c #visual-studio-2010 #build #release #hwnd
#c #visual-studio-2010 #сборка #выпуск #hwnd
Вопрос:
Я использую VS2010 и столкнулся со следующей проблемой:
HWND handle = NULL;
handle = pPlatform->getWindowHandle();
Когда я отлаживаю этот код в конфигурации отладки, «дескриптору» присваивается правильное значение, но когда я отлаживаю это в сборке выпуска, «дескриптор» остается НУЛЕВЫМ.
getWindowHandle() — это просто средство доступа:
HWND PlatformManager::getWindowHandle()
{
return windowHandle;
}
«WindowHandle» имеет ненулевое значение как при отладке в сборке debug / release.
Спасибо за помощь.
Ответ №1:
Сборка выпуска включает оптимизацию, и иногда отладчик может видеть неверное значение для переменных, которые оптимизируются. Это усложняет отладку релизных сборок, но именно поэтому они не называются отладочными сборками. 🙂
Короче говоря, если вам просто нужно отладить сборку выпуска, но ваш отладчик обманывает вас, вы всегда можете прибегнуть к старой доброй отладке printf. Добавьте несколько функций трассировки, например, с помощью OutputDebugString, и посмотрите, handle
действительно ли остается NULL в этот момент.
char buf[256]; дескриптор HWND = NULL; дескриптор = pPlatform->getWindowHandle(); OutputDebugStringA(_itoa((int)дескриптор, buf, 10));
Комментарии:
1. Спасибо, действительно кажется, что отладчик не увидел правильного значения 🙂