【发布时间】:2009-06-12 12:49:25
【问题描述】:
我知道我可以使用Process.Start() 在代码中启动一个进程。
是否也可以将调试器附加到该进程?
不是来自代码本身,而只是一种方法?
【问题讨论】:
标签: .net visual-studio debugging
我知道我可以使用Process.Start() 在代码中启动一个进程。
是否也可以将调试器附加到该进程?
不是来自代码本身,而只是一种方法?
【问题讨论】:
标签: .net visual-studio debugging
您可以使用Tools | Attach to Process attach to a running process。如果是 Web 应用程序,您可以通过附加到 aspnet_wp.exe 或 w3wp.exe 来附加到它。
回答您关于如何以编程方式附加到进程的问题:
以下是其他处理该问题的 Stack Overflow 问题:
【讨论】:
在 Visual Studio 中单击工具 |附加到进程。然后选择合适的服务。
【讨论】:
您几乎可以在任何物超所值的调试器中执行此操作。
Visual Studio 有一个可以满足您的需求。
如果您需要更高级的控制,请尝试OllyDbg,它是一个反汇编程序,因此您可以在汇编级别实际操作您的程序。这将使您完全控制,但也可能是信息过载。
【讨论】:
在 Visual Studio 2015 中,单击菜单中的“调试 > 附加到进程”。或者,还有一个快捷键Ctrl+Alt+P。
【讨论】:
您可以在代码中执行此操作。
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());
【讨论】: