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.
有谁知道是什么阻止我调试本机代码?
谢谢
有谁知道是什么阻止我调试本机代码?
这很奇怪,我按照您的链接提供的示例进行操作,效果很好。事实上,所有步骤只是规则。
所以请检查这些:
1)请确保您的 C++ 项目使用Active(Debug) Configuration 和x64平台。当你更改Debugger type为mixed然后点击Apply时,请记得重建项目。
2)当您在 C# 项目中引用本机代码时,请关闭 VS 实例,删除obj、bin、.vs隐藏文件夹,然后重新打开您的 C# 项目。之后,请确保检查Enable Native Code debugging,然后重建整个解决方案。
3)在要中断的位置添加断点并开始单步执行代码。确保您已将断点放置在 C# 应用程序调用的代码中。
4)更改target gramework为4.7.2再次测试。
5)请尝试创建一个新的net framework 4.7.2c#项目来测试问题是否是由旧项目引起的。
另外,如果所有步骤都不起作用,请在VS Installer中进行修复。
| 归档时间: |
|
| 查看次数: |
4033 次 |
| 最近记录: |