Jon*_*eld 14 c++ debugging expression visual-studio
在Visual Studio中,由于各种原因,在调试会话期间无法解析大多数对象和变量.这意味着我无法检查或观察对象或调用它们的函数,因此调试代码非常困难,因为我的大多数表达式都无法正常工作.将表达式添加到监视窗口时,我遇到的一些典型错误包括:
这些表达式通常涉及重载的运算符和/或模板类对象.
为什么会这样?你怎么解决它?
您遇到的错误是由于调试器的限制,Daniel没有暗示的错误.
监视窗口无法调用重载的运算符.如果你有例如std::vector<int> vecSomething
你不能vecSomething[0]
进入观察窗口,因为std::vector<int>::operator[]
是一个超载的运营商.因此,对于对象矢量,您无法vecObject[0].SomeMemberVariableOfObject
在观察窗口中执行此操作.你可以写vecObject._Myfirst[0].SomeMemberVariableOfObject
.在Visual Studio的STL实现中,_Myfirst
是指向第一个元素的向量的成员.
如果将自己的变量和类型添加到监视窗口,请直接向数据成员添加监视.跟随指针链是没有问题的member.memberStruct.ptrToObj->memberOfObj
.
编辑:
实际上,Visual Studio可以在Watch窗口中调用代码:http: //geekswithblogs.net/sdorman/archive/2009/02/14/visual-studio-2008-debugging-ndash-the-watch-window.aspx
因此,为什么不能使用重载运算符有点神秘.
归档时间: |
|
查看次数: |
6927 次 |
最近记录: |