c++ - 如何在Watch窗口中查看本地类成员的值?

标签 c++ visual-studio-2010 visual-c++

在 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() 并转到 Watches Pane 并观察成员变量 mMember。您不会看到它的值,而是会看到错误

CXX0033: Error: error in OMF type information

是否可以让调试器显示成员的值?如果是这样,如何? 我知道这可能是一个错误,我已经在 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:在这个问题上,引用一个已经提交给微软并得到确认的错误将大大有助于成为一个被接受的答案。我已经搜索过了,但没有找到。

最佳答案

这是一个错误,VS2008 也有,但它已在 VS2012 中修复,因此他们肯定会很快关闭您的反馈文章。

解决方法会很困难,调试器没有this 的类型信息。这也让它放弃了 watch 表情上的幽灵。从技术上讲,您可以使用 Debug + Windows + Memory + Memory1 并在地址表达式中键入“this”。 “somevarname”是第一个成员,并且该结构没有 v 表,因此您可以轻松找到该值。显然,这不能很好地扩展。

关于c++ - 如何在Watch窗口中查看本地类成员的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12176905/

相关文章:

css - 仅 1 行阻止 CSS 验证

visual-studio-2010 - 如何将 Haskell DLL 集成到 C++/Qt Windows 应用程序中?

c# - 无法使用 C# 代码在 Adob​​e Reader 11 的特定页面打开 pdf 文件

c++ - boost 安装 : missing argument global-setup

c++ - 尝试创建直接 x 11 窗口时出现链接器错误

C++ 阶乘程序做奇怪的数学

c++ - 使用/不使用 Visual Leak Detector 在 C++ 中检测内存泄漏

c++ - 错误 LNK2019 : unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

c++ - 使用自动与显式指定私有(private)结构类型时的行为差异

android - 为 android 构建 openframeworks 时出错 : “invalid use of incomplete type ‘class Poco::Path’ ”