调试从非托管C++调用的托管.NET代码

Chu*_*ebs 3 c# c++ debugging visual-studio-2010 visual-studio

我已经阅读了SO上提供的解决方案,但到目前为止还没有解决我的问题.我的启动项目是一个非托管的C++项目(我们称之为TestWrapper).目标是让TestWrapper调用托管C++项目,然后调用我的C#项目.这工作正常,我没有运行它的问题.

但是,我的C#代码中出现了异常.由于某种原因,断点不会被击中,实际的调试中断发生在内部ntdll.dll.我试图右键单击C#项目并启用非托管调试,但这不能解决问题.如果有人能指出我的解决方案,我将非常感激.

我要继续并包括项目布局:

TestWrapper (unmanaged C++) -> ManagedWrapper (managed C++) -> MyCSharpProject (C#)
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,它在于调试的配置,但我知道甚至不知道从哪里开始看.

Jar*_*Par 7

如果调试器调试本机,托管或本机+托管代码,调试器必须决定启动.因此,您必须更改启动项目上的调试器设置,而不是您遇到问题的DLL.请尝试以下方法

  • 右键单击项目并选择"属性"
  • 导航到配置属性 - >调试
  • 将调试器类型切换为混合

调试器设置甚至包含在Visual Studio中的DLL项目中有点误导.它对系统没有任何影响.