调试非托管应用程序并同时管理C#dll

时间:2011-11-09 18:54:54

标签: c# visual-studio-2010 com

我的设置:
Application.exe (Visual Studio 6.0 C ++)
Component.dll (Visual Studio 2010 C#)
Application.exe使用Component.dll

我希望能够同时调试我的Visual Studio 6.0 C ++应用程序和它使用的Visual Studio 2010 C#组件,但我不确定这是否可行。

我尝试从Visual Studio 6.0启动应用程序并在我的Visual Studio 2010组件解决方案中附加到该进程( Application.exe ),但是当我继续附加到该进程时( Application.exe )它是灰色的。我尝试将Attach To:切换为Native,但这不允许我附加到此过程。我的Application.exe仍然在窗口中显示为灰色。

是否可以这样做,如果是这样的话?

2 个答案:

答案 0 :(得分:9)

只有一个调试器附加到进程,这就是选择灰显的原因。你几乎没有使用VS6调试器,它对托管代码一无所知。你必须从VS2010调试它。右键单击C#项目,Properties,Debug。选择“启动外部程序”并选择您的C ++ .exe。勾选“启用非托管代码调试选项”。

在C#代码中设置断点,然后按F5启动.exe。一旦C ++代码加载DLL,断点指示器就会变为稳定。尽管您使用的是上个世纪的.pdb,但也可能调试C ++代码。您无法从托管代码单步进入C ++代码,您必须设置断点。

答案 1 :(得分:3)

您无法将两个不同的调试器附加到同一进程。

相反,您只能将其附加到VS2010,但将其作为托管和本机附加。