如何在c++中修复Visual Studio本地/手表(调试版本)

How to repair Visual Studio locals/watches in C++ (Debug build)

本文关键字:手表 本地 调试 版本 Studio Visual c++      更新时间:2023-10-16

有时VS autos/locals/watch会中断,而不是变量/值,我所拥有的是不同类型的:

CXX0029: Error: not struct pointer  
CXX0033: Error: error in OMF type information   
CXX0072: Error: type information missing or unknown 
CXX0025: Error: operator needs class/struct/union   

重建项目,清理PDB/NCB等并不能解决问题。我能做什么?

看看这个微软支持说明:FIX: CXX0033 OMF类型错误从前向类声明

一旦你修复了支持说明中引用的PCH问题,我认为你所有的错误都会消失。

实际上有一个解决方案可以让您继续使用预编译的头文件:查看这篇最新的KB文章和/Yl开关的文档——它似乎是专门针对这个错误定制的。

只需在stdafx.cpp(或您自己的自定义/Yc文件)命令行中添加'/Ylxxxx',其中xxxx表示lib中的任意函数名称。

我最近遇到了与您相同的症状(在VS2010中),这为我解决了问题。

您正在调试"发布"构建吗?如果是这样,许多局部变量将不作为"可调试"元素存在。你可以绕过这个问题(如果你必须调试发布版本),通过在程序集级别调试并查看寄存器值(相对于堆栈值,其中auto/local将在调试版本中),并在"观察窗口"中适当地转换它们。

否则,构建Debug构建并调试该构建版本。您将获得不满足前提条件的断言,将相关/不相关的内容转储到输出窗口,以及更直接的单步调试。

它帮助我从使用程序数据库(/ZI)切换到"c7兼容";(/Z7)。关闭预编译的头文件没有什么区别。重建也没有。