通过Visual Studio中的不同解决方案进行调试

Chr*_*Cap 44 debugging visual-studio

目前我的解决方案A包含一个域层基础和解决方案B,它引用了解决方案A中的二进制文件.有没有一种方法可以直接从一个调试到另一个,同时打开两个visual studio实例(每个解决方案一个).我已经读过你可以将解决方案A中的现有项目添加到解决方案B.还有其他解决方案吗?我已经尝试直接将解决方案A附加到解决方案B中正在运行的可执行文件但它不会让我将多个调试器附加到同一个应用程序.

我应该注意,当我进入它的一部分时,会自动从解决方案A的Visual Studio实例中调出解决方案A中的代码.我想这是可以接受的,但你不能只设置任意断点并等待代码以这种方式击中它们.

谢谢

Jar*_*Par 34

没有办法让2个Visual Studio实例调试同一个进程.这是Windows和大多数其他操作系统的限制,因为最多一个进程可以调试另一个进程.

尽管调试不属于您的解决方案的二进制文件,但这是完全受支持的方案.正如您所指出的那样,在从解决方案A进行调试时,您可以愉快地从解决方案B中进入二进制文件.

但是这里会遇到的一个项目是名为"Just My Code"的调试功能.这是一个旨在将调试体验最小化到解决方案中的代码的功能.非常适合正常的解决方案,但在调试任意二进制文件时很糟糕.这可能会导致你看到的断点附近出现很多问题.您将要通过执行以下操作禁用它

  • 工具 - >选项 - >调试
  • 取消选中"启用我的代码"

  • 另见Chris的回答.您可以在解决方案B中将解决方案A的源代码设置为断点,而无需向解决方案添加项目.将Visual Studio指向A的PDB文件(在编译期间创建,请参阅Chris的回答),然后在解决方案B中打开A的源文件.您只需打开或拖放即可,无需将其添加到解决方案中.一个注意事项,有时断点将看起来是空心的(就像它不会被击中),直到它的程序集被加载,这可能是在运行时. (4认同)
  • @Weeble,我将源文件从Windows资源管理器拖到Visual Studio文本区域.对我来说,这会打开文件. (2认同)

Dea*_*ing 17

您只能让一个调试器一次调试一个进程.这意味着您只需要打开一个Visual Studio实例.

但是,您只需将解决方案B中的.cpp/.cs /任意文件打开到解决方案A的Visual Studio副本中并设置断点即可.即使这些文件实际上不是解决方案的一部分,它仍然可以工作.

  • 我已经使用VS 13年了,刚刚从你那里了解到,你可以打开一个未被调试的解决方案中出现的源文件,并且仍然允许设置断点(如果找到pdb并且源文件位于相同的位置和其他条件,但仍然.我会进一步调查).非常感谢Dean (6认同)

Chr*_*ris 16

如果您明确加载解决方案A中的符号该怎么办?

如果您转到工具 - >选项 - >调试 - >符号,您可以将它指向解决方案A中的.pdb文件.

然后,您可以通过在调试时转到Debug-> Windows-> Modules来查看符号是否从二进制文件加载.