简体   繁体   中英

How do I attach a process to the debugger in Visual Studio?

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());

I use vs 2022 and it's under Debug | Attach to process. (ss attached) 在此处输入图像描述

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM