我有一个产生新进程的应用程序。在应用程序的开发过程中,我想将调试器附加到新进程。目前我可以通过 Visual Studios 附加到进程功能来做到这一点,但是当我需要测试对代码的微小更改时,每次手动附加它是很痛苦的。
是否可以使用 Process.Start 生成一个新进程,然后将当前附加到当前进程的任何调试器附加到新进程上?
IE:
启动 Process1 并启用调试
Process1 启动 Process2
Process1 将调试器附加到 Process2
我有一个产生新进程的应用程序。在应用程序的开发过程中,我想将调试器附加到新进程。目前我可以通过 Visual Studios 附加到进程功能来做到这一点,但是当我需要测试对代码的微小更改时,每次手动附加它是很痛苦的。
是否可以使用 Process.Start 生成一个新进程,然后将当前附加到当前进程的任何调试器附加到新进程上?
IE:
启动 Process1 并启用调试
Process1 启动 Process2
Process1 将调试器附加到 Process2
不是一个非常干净的解决方案,但您可以执行以下操作:
Debugger.IsAttached
),请将参数传递给 Process2 (eg process2.exe /debug
)/debug
参数启动,则从代码 ( Debugger.Launch()
)附加调试器作为其他人的仅供参考,这里是 Thomas Levesque(已接受)答案的代码实现:
代码
启动应用程序:
Process.Start(/** Path to assembly **/, System.Diagnostics.Debugger.IsAttached ? "/Debug" : "");
目标应用:
if (Environment.GetCommandLineArgs().Contains("/Debug"))
System.Diagnostics.Debugger.Launch();
这将导致 Visual Studio 的大多数实例在新进程启动时提示您:
这是正常的...只需点击“是的,调试 [程序集名称]”。下一个窗口将提示您选择要附加到的调试器,通常默认为最初用于启动启动应用程序的调试器