【问题标题】:Value not assigned to handle when build using Release Configuration in VS2010在 VS2010 中使用发布配置构建时未分配要处理的值
【发布时间】:2011-04-29 19:31:06
【问题描述】:

我用的是VS2010,遇到如下问题:

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

当我在调试配置中调试此代码时,会为“句柄”分配一个正确的值,但是当我在发布版本中调试此代码时,“句柄”保持为 NULL。

getWindowHandle() 只是一个简单的访问器:

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

“windowHandle”在调试/发布版本中调试时都具有非 NULL 值。

感谢您的帮助。

【问题讨论】:

    标签: c++ visual-studio-2010 build release hwnd


    【解决方案1】:

    Release 版本包含优化,有时调试器可能会看到已优化变量的错误值。它使 Release 构建更难调试,但这正是它们不被称为 Debug 构建的原因。 :)

    简而言之,如果您只需要调试发布版本,但您的调试器正在欺骗您,您可以随时求助于旧的 printf 调试。添加一些跟踪功能,例如使用 OutputDebugString,看看 handle 在那个时候是否真的保持 NULL。

    字符缓冲区[256]; HWND 句柄 = NULL; 句柄 = pPlatform->getWindowHandle(); OutputDebugStringA(_itoa((int)handle, buf, 10));

    【讨论】:

    • 谢谢,看来调试器确实没有看到正确的值 :)
    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 2012-11-07
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    相关资源
    最近更新 更多