首页 > 解决方案 > 使用源代码将进程附加到调试器?

问题描述

在调试模式下运行 C# 控制台应用程序时,是否可以使用 Process.Start() 启动另一个 C# 控制台应用程序(相同的程序或不同的程序),然后使用 C# 源代码自动将其附加到调试器?

我正在使用 Visual Studio 2017+、.NET 4.7.2、C# 7.3。

这个问题不是重复的,因为建议的问题/答案都没有完全回答这个特定问题。我正在寻找一种完全自动化的方法来使用源代码将任何进程对象附加到当前调试器。其他问题中的答案都没有专门解决这个问题。例如,他们建议使用过时的插件、生成新的调试器实例或手动附加进程,而不是使用 C# 源代码来完成任务。

例如:

var this_exe = Environment.GetCommandLineArgs()[0];
var p = Process.Start(this_exe, "/compute");
// How to attach 'p' to the debugger?

标签: c#visual-studiodebuggingvisual-studio-debugging

解决方案


在您从 Process 开始的 exe 的 Main 方法中,添加 Debugger.Launch(),例如

private static void Main(string[] args)
{
    Debugger.Launch();
    //your code
}

推荐阅读