从C#解决方案调试C ++解决方案

时间:2017-07-19 21:19:03

标签: c# c++ visual-studio dll

我有两个VS解决方案。解决方案A_sol是C ++ / C#项目。解决方案B_sol的项目B_proj*.dll B_proj项目生成的C ++ A_sol周围的C#包装器。 如何从A_proj调试B_proj? 更新:B_sol中的一个项目是可执行文件。

3 个答案:

答案 0 :(得分:2)

如何从B_proj调试A_proj?

如果我理解正确,A_proj是一个C ++项目。下面我将基于这个假设给出我的建议。

请注意,只要您拥有调试信息(换句话说,对于C ++项目 - 如果Visual Studio能够获取PDB'那么,从哪个项目/解决方案开始调试并不重要。或多个)。

因此,您可以从解决方案中运行可执行文件,或者按照@hoodaticus in his answer的建议,附加到已在运行的进程。无论您的项目是否可执行,您都可以附加到该项目:

  1. DLL加载到该进程中
  2. 您拥有与DLL(在构建期间生成)匹配的PDB文件
  3. 所以我只是重复相同的建议

      

    在另一个项目中,执行Debug>附加到流程>选择你的过程   从列表中。

    但我要补充一点,你必须注意选择"调试这些代码类型 - >天然"对于包含C ++ DLL的进程。这个部分经常被遗漏并让人困惑,需要一些时间来发现(个人而言,我经常进入)enter image description here

    希望有所帮助。

答案 1 :(得分:1)

  1. 在调试器外运行要调试的进程。
  2. 在另一个项目中,执行Debug>附加到流程>从列表中选择您的流程。

答案 2 :(得分:0)

要能够通过按F5进行调试(而不是每次都要选择进程),

  • 右键单击启动项目(EXE),然后选择“属性”。
  • 在“调试”标签中,选择“启用本机代码调试”

以上步骤来自本教程:https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-debug-managed-and-native-code?view=vs-2019