2

这个问题可能重复。

我有一个 MFC 项目,它使用 /clr 开关和一些 C++/CLI 代码来使用 .Net 组件。最初这是在 VS2005 上。

在升级到 VS2012 Update 2 时,在调试期间,本机数据类型没有显示任何值或类型。我了解到,在 VS2010 中引入了一种新的原生数据类型可视化机制(natvis),并在 VS2012 中进行了扩展/增强。按照该页面上的信息,我取消选中托管 C++ 兼容模式C/C++ 编辑并继续。在此之后,断点被禁用并停止被击中。使用“Only Managed”调试器,断点被命中,但没有显示任何值。

最后,我使用“混合”调试器并用于__debugbreak()强制中断。这导致仅当它们是本地汽车时才显示整数值;并且数据类型被正确提取。但是,std::string或者CString不显示值,而是在值列中显示它们的类型。同样,不显示指针、类成员或函数参数值,并且在值列中显示类型信息、未定义值或超出范围。

该行为在汽车、本地和监视窗口以及鼠标悬停在符号上是一致的。

如何在 VS2012 混合模式 C++/CLI MFC 应用程序中调试期间获取本机数据类型以显示其值。

我已阅读此问题并验证所有符号已加载到模块窗口中。

显然,微软已经意识到了这个问题,即将到来的更新 3 的 CTP 应该会修复它。

另外,为什么我需要使用__debugbreak()

4

2 回答 2

2

几天前,微软发布了一个 Visual Studio Service Pack 3 RC,它可能会有所帮助(现在我自己安装)。这是链接:http ://www.microsoft.com/en-us/download/details.aspx?id=38832

于 2013-05-10T18:47:44.367 回答
0

重新安装 Visual Studio 2012 并且不要应用 Service Pack 2。

于 2013-04-26T16:28:10.183 回答