尽管启用了本机代码调试,但无法从托管调试本机代码

Pro*_*rof 6 mixed-mode visual-studio-debugging

我有一个托管项目(.net 4.6.2),它调用本机 dll。如果我在本机代码中放置一个断点,它就会命中它,但是如果我尝试检查堆栈变量,我会得到一个相当烦人的结果

检查非托管类型“MyTypeInHere*”需要启用非托管调试。请将调试器类型设置为“混合”,然后重试

我按照https://learn.microsoft.com/en-us/visualstudio/debugger/how-to-debug-management-and-native-code?view=vs-2019中的步骤进行操作,在调试托管代码时调试非托管代码,但是我仍然无法检查类型。

在托管项目属性中,在“调试”下我已启用enable native code debugging,在“构建”页面下我已检查allow unsafe code。此外,在 launchSettings.json 中,我有"nativeDebugging": true

另请注意,在本机项目属性设置中,我已将调试器类型设置为mixed.

有谁知道是什么阻止我调试本机代码?

谢谢

Mr *_*ian 2

有谁知道是什么阻止我调试本机代码?

这很奇怪,我按照您的链接提供的示例进行操作,效果很好。事实上,所有步骤只是规则。

所以请检查这些:

1)请确保您的 C++ 项目使用Active(Debug) Configuration 和x64平台。当你更改Debugger typemixed然后点击Apply时,请记得重建项目。

2)当您在 C# 项目中引用本机代码时,请关闭 VS 实例,删除objbin.vs隐藏文件夹,然后重新打开您的 C# 项目。之后,请确保检查Enable Native Code debugging,然后重建整个解决方案。

3)在要中断的位置添加断点并开始单步执行代码。确保您已将断点放置在 C# 应用程序调用的代码中。

4)更改target gramework4.7.2再次测试。

5)请尝试创建一个新的net framework 4.7.2c#项目来测试问题是否是由旧项目引起的。

另外,如果所有步骤都不起作用,请在VS Installer中进行修复