【问题标题】:How to attach a child process in existing Debugger?如何在现有调试器中附加子进程?
【发布时间】:2019-11-22 18:53:53
【问题描述】:

我一直在研究 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 调试器,但我总是有一个选择:

...的新实例

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

【问题讨论】:

标签: c# wpf visual-studio-debugging child-process


【解决方案1】:

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

目前支持VS2013~VS2019。更多详情请查看this blog。希望对你有帮助:)

【讨论】:

  • 我在 VS2019 中使用 .net 框架对其进行了测试,但无法重现该问题。有用。抱歉,由于某种原因我今天没有测试 .net core 的情况,我明天将测试 .net core 并在这里更新它:-)
  • @EmonHaque 奇怪的是它可以在我的机器上使用 VS2019 16.3.9 虽然我实际上没有设置 launchsettings.json 文件。 1.右键项目=>properties=>debug=>启用本机调试 2.由于wpf(.net core)的输出与wpf(.net fx)不同,我把第二个项目的所有输出复制到第一个项目的输出文件夹。 3. 该扩展在我的机器上运行良好,它不会崩溃...(确保您已启用启用子进程调试),正在尝试重新安装...
  • 4.我没有使用 Process.start,而是使用ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "WpfBpp.exe"; using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit(); }
  • 我不确定您遇到的行为是否源于代码,如果可能,请分享一个最小示例,以便我可以直接为您检查:)
  • 很高兴知道它有帮助:)
猜你喜欢
  • 2018-08-15
  • 2020-08-25
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
相关资源
最近更新 更多