How do I attach a process to the debugger in Visua

2019-01-17 04:00发布

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?

5条回答
Summer. ? 凉城
2楼-- · 2019-01-17 04:37

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.

查看更多
再贱就再见
3楼-- · 2019-01-17 04:45

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());
查看更多
地球回转人心会变
4楼-- · 2019-01-17 04:51

You can attach to a running process using 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:

查看更多
Evening l夕情丶
5楼-- · 2019-01-17 04:57

In visual studio click Tools | Attach to process. Then select appropriate service.

查看更多
Luminary・发光体
6楼-- · 2019-01-17 04:59

In Visual Studio 2015, click 'Debug > Attach to process' in the menu. Alternatively, there is a shortcut key Ctrl+Alt+P.

查看更多
登录 后发表回答