在使用 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 的行为避免混淆要好得多。