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

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

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

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

 TestWrapper (unmanaged C++) -> ManagedWrapper (managed C++) -> MyCSharpProject (C#) 

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

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

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

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

一个想法可能是从C#环境调试应用程序。 如果您正在使用express,则可以通过在csproj文件中添加几行来设置启动应用程序

 Program ..path to your app..