我知道我可以使用Process.Start()
在代码中启动流程。
是否也可以将调试器附加到该进程?
不是来自代码本身,而只是一种方法吗?
答案 0 :(得分:23)
您可以attach to a running process使用Tools | Attach to Process
。如果它是Web应用程序,您可以通过附加到aspnet_wp.exe
或w3wp.exe
附加到它。
回答有关如何以编程方式附加到流程的问题:
以下是其他Stack Overflow问题:
答案 1 :(得分:3)
在visual studio中单击工具|附加到流程。然后选择适当的服务。
答案 2 :(得分:2)
你可以在几乎任何有价值的调试器中执行此操作。
Visual Studio可以满足您的需求。
如果您需要更高级的控制,请尝试OllyDbg,这是一个反汇编程序,因此您可以在程序集级别实际操作程序。这将为您提供完全控制,但也可能是信息过载。
答案 3 :(得分:1)
在Visual Studio 2015中,单击“'调试>附加到流程'在菜单中。或者,有一个快捷键Ctrl + Alt + P.
答案 4 :(得分:1)
您可以在代码中执行此操作。
public static void Attach(DTE2 dte)
{
var processes = dte.Debugger.LocalProcesses;
foreach (var proc in processes.Cast<EnvDTE.Process>().Where(proc => proc.Name.IndexOf("YourProcess.exe") != -1))
proc.Attach();
}
internal static DTE2 GetCurrent()
{
var dte2 = (DTE2)Marshal.GetActiveObject("VisualStudio.DTE.12.0"); // For VisualStudio 2013
return dte2;
}
用法:
Attach(GetCurrent());