在 VS2010 中使用发布配置构建时,未将值分配给句柄

发布于 2024-11-04 04:26:55 字数 390 浏览 2 评论 0原文

我使用 VS2010,遇到以下问题:

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

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

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

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

在调试/发布版本中进行调试时,“windowHandle”都有一个非 NULL 值。

感谢您的帮助。

I use VS2010 and I have encountered following problem:

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

When I debug this code in debug configuration a correct value is assigned to "handle", but when I debug this in release build "handle" stays NULL.

getWindowHandle() is just a simple accessor:

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

"windowHandle" has a non-NULL value both when debugging in debug/release build.

Thanks for the help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悲喜皆因你 2024-11-11 04:26:55

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

简而言之,如果您只需要调试发布版本,但调试器在欺骗您,那么您始终可以求助于老式的 printf 调试。添加一些跟踪函数,例如使用 OutputDebugString,并查看此时 handle 是否确实保持为 NULL。

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

The Release build includes optimizations, and sometimes the debugger might see the wrong value for variables that get optimized. It makes Release builds harder to debug, but that's exactly why they're not called Debug builds. :)

In short, if you just have to debug a release build but your debugger is playing tricks on you, you can always resort to good-old printf debugging. Add a few trace functions, e.g. with OutputDebugString, and see if handle really stays NULL at that point.

char buf[256];
HWND handle = NULL;
handle = pPlatform->getWindowHandle();
OutputDebugStringA(_itoa((int)handle, buf, 10));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文