【发布时间】:2012-08-06 06:26:25
【问题描述】:
在使用 Visual Studio 2012 RC 调试一些 C++ 代码时,我注意到在类成员函数和成员变量值上有断点的奇怪行为。
当我在类成员函数上设置断点时,VS 2012 将断点放在函数大括号上。现在,当悬停在函数使用的成员变量上时,该值始终“未初始化”。但是,按 F10 进入下一行(函数中的第一行),成员变量现在更改为正确的值。
这看起来像一个类的成员变量的值直到进入成员函数的第一行才被加载。但这很令人困惑——那么打破大括号的意义何在? (在函数上设置断点时的默认设置。)
打破类成员函数:
成员变量active 据说是true(实际上不是!)
按 F10 进入下一行:
成员变量active 现在被称为false(这是正确的。)
我在这里遗漏了什么还是这是 Visual Studio 2012 RC 中的实际错误?
编辑: 我找到了我的 Visual Studio 2010 副本并尝试了这个。关于断点的行为是相同的。不同之处在于 IntelliSense 如何处理这种情况。在 VS 2010 中,IntelliSense 在大括号上断开时根本不会弹出工具提示,而在 VS 2012 中始终显示工具提示。我认为 VS 2010 的行为要好得多,可以避免混淆。
【问题讨论】:
-
Visual Studio 2010 是否表现出相同的调试器行为?
-
@JamesMcNellis 我没有 Visual Studio 2010。抱歉。
-
我也没有安装它了。我一直认为这要么是设计的,要么是一个怪癖。基本上,当调试器在
{上中断时,this指针尚未初始化。 -
如果这是设计使然,那什么时候有用?
-
@JamesMcNellis 仅供参考:我用 VS 2010 的行为更新了我的问题
标签: visual-studio visual-studio-2012