Visual Studio - “attach to particular instance of the process” 宏

3
我猜几乎所有经常进行调试的人都在Visual Studio中有一个方便的宏(并且在工具栏上有快捷方式),当调用它时,它会自动附加到特定进程(通过名称标识)。
这比点击“调试” ->“附加到进程…”节省了很多时间,但只有在运行要附加到的单个进程实例时才有效。如果内存中有特定进程的多个实例-调试器将选择第一个(具有较小的PID?)。
有没有一个宏可以显示对话框(如果指定名称的进程有多个正在运行),并允许开发人员选择他/她真正想要附加到的进程。
我猜选择可以基于窗口标题文本进行(在大多数情况下足够),当选择特定实例时,宏将进程的PID传递给Debugger对象?
如果有人拥有该宏或知道如何编写它,请分享。
谢谢。
1个回答

6

您可以随时附加到所有实例上... 以下是我在调试ASP.NET应用程序时使用的宏 - 这些应用程序通常具有UI和Web服务,并且我需要同时附加到两者。

Sub AttachToAspNET()
        Try
            Dim process As EnvDTE.Process

            Dim listProcess As New List(Of String)
            listProcess.Add("aspnet_wp.exe")
            listProcess.Add("w3wp.exe")
            listProcess.Add("webdev.webserver.exe")

            For Each process In DTE.Debugger.LocalProcesses
                For Each procname As String In listProcess
                    If process.Name.ToLower.IndexOf(procname) <> -1 Then
                        process.Attach()
                    End If
                Next
            Next
            ListDebuggedProcesses()
        Catch ex As System.Exception
            MsgBox(ex.Message)
        End Try
    End Sub

1
这对我很有帮助,但请记得在顶部包含 Imports System.Collections.Generic。由于我找不到任何关于 ListDebuggedProcesses() 的参考,所以我将其注释掉了。 - Plynx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接