在Visual C ++ 2010中,请考虑以下事项:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
struct MyClass
{
MyClass() : mMember(0)
{}
void Func()
{
int tmp = 0;
tmp++;
}
private:
int mMember;
};
MyClass inst;
inst.Func();
return 0;
}
进入Func()并转到“监视”窗格并监视成员变量
mMember
。您将看到错误,而不是看到它的值CXX0033:错误:OMF类型信息错误
是否可以让调试器显示成员的值?如果是这样,如何?
我知道这可能是一个错误,我已经在Microsoft Connect上报告了它,我现在正在寻找一种解决方法(不涉及将定义移出函数范围之外),以及对此原因的解释。
我提交的错误报告可在以下位置找到:
https://connect.microsoft.com/VisualStudio/feedback/details/760149/visual-c-2010-cant-view-local-class-members-in-debugger-cxx0033-error-error-in-omf-type-information
编辑:我完全知道在函数范围之外定义的类可以正常工作。
Edit2:对此问题已提交给Microsoft且已确认的错误的引用将大大有助于成为公认的答案。我已经搜索了一个,却没有找到。
最佳答案
这是一个错误,VS2008也有,但是在VS2012中已得到修复,因此他们一定会迅速关闭您的反馈文章。
解决方法将很困难,调试器没有为此的类型信息。这也使它放弃了手表表达上的幽灵。从技术上讲,您可以使用Debug + Windows + Memory + Memory1并在地址表达式中键入“ this”。 “ somevarname”是第一个成员,并且该结构没有v表,因此您可以轻松找到该值。显然,这不能很好地扩展。
关于c++ - 如何在“监视”窗口中查看本地类(class)成员的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12176905/