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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尽管启用了本机代码调试,但是仍无法从托管调试本机代码相关的知识,希望对你有一定的参考价值。

我有一个托管项目(.net 4.6.2),该项目调用一个本机dll。如果我在本机代码中放置一个断点,它会命中它,但是如果我尝试检查堆栈变量,我会感到非常烦恼

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

我遵循https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-debug-managed-and-native-code?view=vs-2019Debugging unmanaged code while debugging managed code中的步骤,但仍然无法检查类型。

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

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

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

谢谢

答案

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

这很奇怪,我遵循了您的链接提供的示例,并且效果很好。实际上,所有步骤只是规则。

所以请检查以下内容:

[1)请确保您的c ++项目正在使用Active(Debug)配置和x64平台。当您将Debugger type更改为mixed,然后单击“应用”时,请记住要重建项目。

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

3)target gramework更改为4.7.2以再次测试。

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

另外,如果所有步骤均无效,请do a repair in VS Installer

以上是关于尽管启用了本机代码调试,但是仍无法从托管调试本机代码的主要内容,如果未能解决你的问题,请参考以下文章

vs无法调试 ,还没有为该文档加载任何符号

如何附加调试器以从托管(C#)包装器进入本机(C++)代码?

在纯本机模式下开始调试 C# 启动项目

VS 远程调试问题

托管对象与本机对象

一个关于iis本机调试的问题