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



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

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

我遵循了https://learn.microsoft.com/en-us/visualstudio/debugger/how-to-debug-managed-and-native-code?view=vs-2019,在调试托管代码的同时调试非托管代码,但我仍然无法检查类型。

在托管项目属性中,在调试下我启用了enable native code debugging,在构建页面下我选中了allow unsafe code。在launchSettings.json中,我有"nativeDebugging": true

还要注意,在本机项目属性设置中,我已将Debugger类型设置为mixed

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

感谢

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

这很奇怪,我遵循了您的链接提供的示例,它运行得很好。事实上,所有的步骤都只是规则。

所以请检查这些:

1(请确保您的c++项目正在使用活动(调试(Configuration和x64平台。当您将Debugger type更改为mixed,然后单击"应用"时,请记住重新生成项目。

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

3(在要中断的地方添加断点,并开始逐步执行代码。确保在C#应用程序调用的代码中放置了断点。

4(target gramework更改为4.7.2以再次测试。

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

此外,如果所有步骤都不起作用,请在VS安装程序中进行修复。

最新更新