我已经通读了 SO 上可用的解决方案,但到目前为止还没有解决我的问题。我的启动项目是一个非托管 C++ 项目(我们称之为 TestWrapper)。目标是让 TestWrapper 调用托管 C++ 项目,然后调用我的 C# 项目。这工作正常,我运行它没有问题。
但是,我的 C# 代码中出现异常。由于某种原因,断点没有命中,实际的调试中断发生在 ntdll.dll
内部。我已尝试右键单击 C# 项目并启用非托管调试,但这并不能解决问题。如果有人能指出我的解决方案,我将不胜感激。
我继续并包括项目布局:
TestWrapper (unmanaged C++) -> ManagedWrapper (managed C++) -> MyCSharpProject (C#)
我觉得它在于调试的配置,但我的知识还不够,甚至不知道从哪里开始看。
最佳答案
调试器必须决定启动时是调试 native 代码、托管代码还是 native + 托管代码。因此,您必须更改启动项目的调试器设置,而不是您遇到问题的 DLL。尝试以下操作
- 右键单击该项目并选择“属性”
- 导航到配置属性 -> 调试
- 将调试器类型切换为混合
调试器设置甚至包含在 Visual Studio 的 DLL 项目中,这有点误导人。它对系统没有任何影响。
关于c# - 调试从非托管 C++ 调用的托管 .NET 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7124294/