调试从托管应用调用的C ++代码时看不到变量内容

时间:2013-04-23 14:20:06

标签: c++ debugging visual-studio-debugging managed-c++

我有一些本机C DLL,我是从托管C ++类库(“Rem”)调用的。在“Rem”类库中,我有一个本机C ++类(api)和一个托管C ++类(API)。

现在从C#控制台应用程序调用托管类(API)(稍后将在Web应用程序中使用)。

调试时我可以单步执行我的本机代码。

我的问题是,当我调试时,除了本地声明的简单类型之外,我看不到任何变量的值。

调试器中没有函数参数,如果我尝试将它们添加为Watch,它只是说“错误:标识符'schema_name'超出范围”('schema_name'是变量名)

任何结构只会在快速监视和监视窗口中显示值“{...}”。 enter image description here

如果我尝试将一个监视添加到结构中的字段,我会得到值“error:'entryList.numItems'不存在”

我试过的东西:

  • 我尝试在托管C ++中创建一个控制台应用程序并从中进行调试,同样的事情。

  • 我试过取消选中 工具 - >选项 - >调试 - >一般 - >托管C ++兼容模式,然后我根本无法进入代码(没有为断点加载符号)

  • 在C#console app项目中,我进入了Properties-> Debug并选中了“启用本机代码调试”(并取消选中)

  • 在C ++类库中,我进入了Properties-> Debugging-> Debugger Type并尝试了“Mixed”,“Native”,“Managed”和“Auto”。

关于我做错了什么建议?

1 个答案:

答案 0 :(得分:2)

我猜您使用的是Visual Studio 2012 Update 2.在这种情况下 - 这是Update 2的已知错误:

https://connect.microsoft.com/VisualStudio/feedback/details/783004/children-cannot-be-evaluated-on-c-cli-after-vs2012-update-2

但要小心,卸载Update 2的“解决方法”会让您看到此错误报告中显示的Visual Studio损坏(是的,更新2已损坏):

https://connect.microsoft.com/VisualStudio/feedback/details/785396/uninstalling-vs2012-update-2-and-repair-of-vs-results-in-atl-files-missing

如果您没有使用Update 2,这可能不是正确答案,但它可以帮助使用Update 2遇到此问题的其他人。