如何在现有调试器中附加子进程?

How to attach a child process in existing Debugger?

我一直在研究 Scott Chamberlain here 提供的将现有调试器附加到 A 启动的进程 B 的解决方案。

在 A 的 ICommand 中,我有这些:

Process.Start(@"C:\...\General.exe", Name);
Application.Current.Shutdown();

并且 B 的 DataContext 在视图中设置为 Code.cs,如下所示:

<Window.DataContext>
    <local:Code/>
</Window.DataContext>

在构造函数中我有这些:

Debugger.Launch();
Name = Environment.GetCommandLineArgs().Skip(1).First(); 

它在 Possible DebuggersGroupBox 中启动 JIT 调试器,但我总是有一个选择:

New Instance of ...

如何在 Possible Debuggers 列表中获取附加到 A 的现有调试器? A 和 B 都在同一个解决方案中。

除了 Scott 的 回答中描述的解决方法,您还可以尝试使用扩展:Microsoft Child Process Debugging Power Tool。此扩展允许 Visual Studio 自动调试子进程在我们启用Debug=>Other Debug Targets=>Child Process Debugging Settings中的选项后。(如果我们正在调试.net代码,我们需要确保选择混合模式)

目前支持VS2013~VS2019。您可以查看更多详细信息 this blog。希望对您有所帮助:)