WPF将调试器传递给新生成的进程

时间:2013-07-29 19:00:04

标签: c# wpf debugging attach-to-process

我有一个应用程序可以生成一个新进程。在开发应用程序期间,我想将调试器附加到新进程。目前我可以通过Visual Studios Attach to Process功能实现这一点,但是当我需要测试对代码的微小更改时,每次返回并手动附加它是一件痛苦的事。

是否可以使用Process.Start生成新进程,然后将当前连接到当前进程的所有调试器附加到 new 进程?

即:

在启用调试的情况下启动Process1 Process1启动Process2
Process1将调试器附加到Process2

2 个答案:

答案 0 :(得分:3)

不是一个非常干净的解决方案,但你可以这样做:

  • 在Process1中,如果您正在调试模式(Debugger.IsAttached)中运行,请将参数传递给Process2(例如process2.exe /debug
  • 在Process2中,如果使用/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实例在新进程启动时提示您:

enter image description here

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