我有一个应用程序可以生成一个新进程。在开发应用程序期间,我想将调试器附加到新进程。目前我可以通过Visual Studios Attach to Process功能实现这一点,但是当我需要测试对代码的微小更改时,每次返回并手动附加它是一件痛苦的事。
是否可以使用Process.Start生成新进程,然后将当前连接到当前进程的所有调试器附加到 new 进程?
即:
在启用调试的情况下启动Process1
Process1启动Process2
Process1将调试器附加到Process2
答案 0 :(得分:3)
不是一个非常干净的解决方案,但你可以这样做:
Debugger.IsAttached
)中运行,请将参数传递给Process2(例如process2.exe /debug
)/debug
参数启动进程,请从代码(Debugger.Launch()
)附加调试器答案 1 :(得分:1)
作为对其他任何人的看法,以下是Thomas Levesque(已接受)答案的代码实现:
代码
启动应用:
Process.Start(/** Path to assembly **/, System.Diagnostics.Debugger.IsAttached ? "/Debug" : "");
目标应用:
if (Environment.GetCommandLineArgs().Contains("/Debug"))
System.Diagnostics.Debugger.Launch();
这将导致大多数Visual Studio实例在新进程启动时提示您:
这是正常的......只需点击“是”,调试[程序集名称]'。下一个窗口将提示您选择要附加到的调试器,通常默认使用orignaly用于启动启动应用程序的调试器