Visual Studio - макрос «привязать к конкретному экземпляру процесса» - PullRequest
3 голосов
/ 25 марта 2010

Полагаю, у каждого, кто много занимается отладкой, есть удобный макрос в Visual Studio (с ярлыком на панели инструментов), который при вызове автоматически подключается к определенному процессу (идентифицированному по имени).

это экономит много времени вместо того, чтобы нажимать «Отладка» -> «Присоединить к процессу ...», но работает, только если выполняется один экземпляр процесса, к которому нужно присоединиться. Если в памяти имеется более одного экземпляра определенного процесса - первый (с меньшим PID?) Выбирается отладчиком.

Есть ли у кого-нибудь макрос, который показывает диалог (если запущено более одного процесса с указанным именем) и позволяет разработчику выбирать тот, к которому он / она действительно хочет присоединиться.

Я полагаю, что выбор может быть сделан на основе текста заголовка windwow (которого было бы достаточно в большинстве случаев), и когда выбран конкретный экземпляр, макрос передает PID процесса объекту отладчика?

Если у кого-то есть этот макрос или он знает, как его написать - пожалуйста, поделитесь.

Спасибо.

1 Ответ

6 голосов
/ 04 ноября 2010

Вы всегда можете прикрепить ко всем экземплярам ... Вот макрос, который я использовал при отладке приложений asp.net - у них обычно есть как пользовательский интерфейс, так и веб-сервис, и мне нужно подключиться к обоим.

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
...