2011-08-19 152 views
3

我已经通读了可用的解决方案,但目前为止没有任何更正我的问题。我的启动项目是一个非托管的C++项目(我们称之为TestWrapper)。目标是让TestWrapper调用一个托管的C++项目,然后调用我的C#项目。这工作正常,我没有运行它的问题。调试托管的.NET代码从非托管C++调用

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

我走在前面,包括项目布局:

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

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

回答

7

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

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

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

+0

哇。谢谢你,修复它。 –

1

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

<StartAction>Program</StartAction> 
<StartProgram>..path to your app..</StartProgram>