我有一个托管项目(.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实例,删除obj、bin和.vs
隐藏文件夹,然后重新打开您的C#项目。之后,请确保选中Enable Native Code debugging
,然后重建整个解决方案。
3(在要中断的地方添加断点,并开始逐步执行代码。确保在C#应用程序调用的代码中放置了断点。
4(将target gramework
更改为4.7.2
以再次测试。
5(请尝试创建一个新的net framework 4.7.2
c#项目,以测试问题是否是由旧项目引起的。
此外,如果所有步骤都不起作用,请在VS安装程序中进行修复。