类构造函数从未在发布模式下执行

发布于 2024-07-08 14:54:47 字数 247 浏览 8 评论 0原文

正如标题所说。 我使用的是 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 技术交流群。

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

发布评论

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

评论(1

看透却不说透 2024-07-15 14:54:47

只是一个想法 - 可能是发布模式下的编译器优化阻止了断点被命中。 如果构造函数没有执行任何操作(即它是无操作),则可能会发生这种情况。 尝试在构造函数中添加一些简单的语句,例如

  1. 声明一个局部变量
  2. 初始化该变量
  3. 以某种方式使用它(例如打印出来)

然后在上面的步骤(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.

  1. Declare a local variable
  2. Initialise the variable
  3. Use it in some way (e.g. print it out)

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.

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