I know I can start a process in code with Process.Start()
. Is it also possible to attach the debugger to that process?
Not from code per se , but just a way to do it?
You can attach to a running process using Tools | Attach to Process
Tools | Attach to Process
. If it's a Web Application, you can attach to it by attaching to aspnet_wp.exe
or w3wp.exe
.
To answer your question on how to attach to a process programmatically:
Here are other Stack Overflow questions that deal with that:
In visual studio click Tools | Attach to process. Then select appropriate service.
You can do this in pretty much any debugger worth its salt.
Visual Studio has one that should fit your needs.
If you need a little more advanced control, try OllyDbg , which is a disassembler, so you can actually manipulate your program at the assembly level. This will give you complete control, but it might be information overload as well.
In Visual Studio 2015, click 'Debug > Attach to process' in the menu. Alternatively, there is a shortcut key Ctrl+Alt+P.
You can do this in your code.
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;
}
Usage:
Attach(GetCurrent());
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.