在Visual Studio中,由于各种原因,在调试 session 期间无法解析我的大多数对象和变量。这意味着我无法检查或监视对象或其调用它们的功能,这使得调试代码极为困难,因为我的大多数表达式都无法使用。将表达式添加到监视窗口时遇到的一些典型错误包括:
这些表达式通常涉及重载的运算符和/或模板类对象。
为什么会这样呢?您如何解决?
最佳答案
您遇到的错误是由于调试器中的限制所致,没有Daniel所暗示的错误。
监视窗口无法调用重载的运算符。
如果您有您不能将std::vector<int> vecSomething
放入监视窗口,因为vecSomething[0]
是重载运算符。因此,对于对象 vector ,无法在监视窗口中执行std::vector<int>::operator[]
。您可以编写vecObject[0].SomeMemberVariableOfObject
。在Visual Studio的STL实现中,vecObject._Myfirst[0].SomeMemberVariableOfObject
是指向第一个元素的 vector 的成员。
如果将自己的变量和类型添加到监视窗口,请直接将监视添加到数据成员。遵循像_Myfirst
这样的指针链是没有问题的。
编辑:
实际上,Visual Studio可以在“监视”窗口中调用代码:
http://geekswithblogs.net/sdorman/archive/2009/02/14/visual-studio-2008-debugging-ndash-the-watch-window.aspx
因此,为什么不能使用重载运算符有点神秘。
关于c++ - Visual Studio无法显示某些监视的表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1788702/