如何在现有调试器中附加子进程?
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 Debuggers
的 GroupBox
中启动 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。希望对您有所帮助:)
我一直在研究 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 Debuggers
的 GroupBox
中启动 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。希望对您有所帮助:)