这个问题可能重复。
我有一个 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()
?