类构造函数从未在发布模式下执行
正如标题所说。 我使用的是 MSVC++ 2008 Express,并且在发布模式下编译时我的类构造函数永远不会执行。 它确实可以在调试模式下工作。
我正在做类似的事情:
ClassTest test;
test.DoIt();
DoIt();
上的断点触发,但 ClassTest::ClassTest();
上的断点不会触发。
Exactly what the title says. I'm using MSVC++ 2008 express, and my class constructor is never executed when compiled in release mode. It DOES work in debug mode.
I am doing something like:
ClassTest test;
test.DoIt();
Breakpoints on DoIt();
trigger, but breakpoints on ClassTest::ClassTest();
do not.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只是一个想法 - 可能是发布模式下的编译器优化阻止了断点被命中。 如果构造函数没有执行任何操作(即它是无操作),则可能会发生这种情况。 尝试在构造函数中添加一些简单的语句,例如
然后在上面的步骤(3)中添加一个断点,并查看是否命中该断点。
由于进行了优化,您可以看到在发布模式下命中断点的方式出现各种奇怪的调试问题。
Just a thought - it could be compiler optimisation in Release mode that is preventing the breakpoint being hit. This could happen if the constructor isn't doing anything (i.e. it's a no-op). Try adding a few simple statements to the constructor, e.g.
Then add a breakpoint on step (3) above, and see if that breakpoint is hit.
You can see all sorts of weird debugging issues with the way breakpoints are hit in Release mode, because of the optimisations which are made.