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

hen*_*sen 7 c++ debugging managed-c++ visual-studio-debugging

我有一些本机C DLL,我从托管C++类库("Rem")调用.在"Rem"类库中,我有一个本机C++类(api)和一个托管C++类(API).

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

在调试时,我可以通过我的本机代码就好了.

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

函数参数在调试器中不可用,如果我尝试将它们添加为Watch,它只是说"error:identifier'model_name'超出范围"('schema_name'是变量名)

任何结构只在快速监视和监视窗口中显示值"{...}". 在此输入图像描述

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

我试过的东西:

  • 我已经尝试在托管C++中创建一个Console应用程序并从中进行调试,同样的事情.

  • 我尝试取消选中Tools-> Options-> Debugging-> General-> Managed C++ Compatibility Mode,然后我根本无法进入代码(没有为断点加载符号)

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

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

关于我做错了什么的任何建议?

Exc*_*ius 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 损坏,如本错误报告中所示(是的,Update 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 遇到此问题的人。