与此问题类似:
Old Question about C# debugging
我正在尝试调试在多个项目中使用的库,并在Visual Studio 2008中使用Intel的C ++ v 11编译器(即非标准编译器)进行编译。我用于调试的当前平台是C#通过ap / invoke调用C ++方法的程序。
有没有办法调试C ++代码(已经在调试模式下编译),而不是像在C ++代码中启动一些巨大的循环并将调试器附加到进程?现在,C#代码刚刚跨过C ++调用。
我已将其设置为可以调试托管和非托管/本机代码,以及调试“不是我的代码”,但这些设置似乎并不重要。
我真的,真的想避免将C ++项目添加到C#项目中;正如我所说,这是一个由多个程序调用的库,因此这样做会对其他程序和维护造成严重后果。
答案 0 :(得分:0)
我记得在WPF开发的早期(项目本身,我当时在MSFT),我们不得不使用两个调试器,WindDbg用于本机代码和.Net独立调试器(不记得了)什么叫做)并在两者中设置断点。不确定VS是否支持此功能。
答案 1 :(得分:0)
答案:为dll设置调试可执行文件和运行目录,然后尝试从dll调试作为单独的项目。也就是说,将intel项目加载到一个sln文件中,然后将C#项目放在另一个sln文件中。
然后,当您尝试通过f5 / debug按钮调试dll时,可执行文件将启动,代码将执行,直到您设置的任何断点。
确保有一个构建后步骤,将dll放入与C#可执行文件相同的目录中;否则,dll将与实际运行的代码不同步,结果将是奇怪的(即断点不排队等)。
另外,使用这种方法,你将失去编辑并继续(或者,如果有办法保留它,我不知道它),但至少你可以调试。
(@Dmitri Nesteruk发布的答案)