2017-07-19 181 views
1

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

+0

一旦代码已经运行,它是不是真的很重要,如果它是EXE或库代码 - 它们都是一样的;) – hoodaticus

回答

2

如何调试A_proj从B_proj?

如果我正确理解你,A_proj是一个C++项目。下面我会根据这个假设给出我的建议。

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

所以,你既可以从溶液中运行可执行文件,或者通过@hoodaticus in his answer的建议,附加到已经运行的进程。无论你的项目是不是可执行,你就能只要重视它为:

  1. DLL被加载到进程
  2. 您有该DLL匹配的PDB文件(编译过程中产生的)

因此我只是重复同样的建议

在其他项目中,做调试>附加到进程>从列表中选择你的进程 。

但是我会补充一点,您必须注意选择“调试这些代码类型 - > Native”,以查看包含您的C++ dll的进程。这部分往往是错过和迷惑的人,需要一些时间来发现(亲自,我经常进入它)enter image description here

希望有所帮助。

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

问题是'A_sol'(一个生成C++ .dll)不是一个可执行的解决方案。它纯粹是一个图书馆解决方案。 – newprint

+0

@newprint - 如果你的库没有用在任何可执行文件中,那么就没有必要对它进行调试,所以这是一个自我解决的问题。如果它在可执行文件中使用,那么您可以使用Attach to Process来运行该可执行文件并从库解决方案中进行调试,就像我所说的那样。 – hoodaticus