1

我有一个产生新进程的应用程序。在应用程序的开发过程中,我想将调试器附加到新进程。目前我可以通过 Visual Studios 附加到进程功能来做到这一点,但是当我需要测试对代码的微小更改时,每次手动附加它是很痛苦的。

是否可以使用 Process.Start 生成一个新进程,然后将当前附加到当前进程的任何调试器附加到进程上?

IE:

启动 Process1 并启用调试
Process1 启动 Process2
Process1 将调试器附加到 Process2

4

2 回答 2

3

不是一个非常干净的解决方案,但您可以执行以下操作:

  • 在 Process1 中,如果您在 Debug 模式下运行 ( Debugger.IsAttached),请将参数传递给 Process2 (eg process2.exe /debug)
  • 在 Process2 中,如果进程以/debug参数启动,则从代码 ( Debugger.Launch())附加调试器
于 2013-07-29T19:05:51.290 回答
1

作为其他人的仅供参考,这里是 Thomas Levesque(已接受)答案的代码实现:

代码

启动应用程序:

Process.Start(/** Path to assembly **/, System.Diagnostics.Debugger.IsAttached ? "/Debug" : "");

目标应用:

if (Environment.GetCommandLineArgs().Contains("/Debug"))
    System.Diagnostics.Debugger.Launch();

这将导致 Visual Studio 的大多数实例在新进程启动时提示您:

在此处输入图像描述

这是正常的...只需点击“是的,调试 [程序集名称]”。下一个窗口将提示您选择要附加到的调试器,通常默认为最初用于启动启动应用程序的调试器

于 2013-07-29T20:09:36.250 回答