Автоматическое присоединение к дочернему процессу в Visual Studio во время отладки

при написании плагинов для media center ваш плагин размещается в ehexthost.exe этот exe запускается из ehshell.exe и у вас нет возможности запускать его напрямую, вместо этого вы передаете специальный параметр ehshell.exe который запустит плагин в отдельном процессе.

когда мы отладки мультимедиа-браузер Я нахожу процесс присоединения ко второму процессу неуклюжим, я знаю об отладчике.Прикрепите, а также некоторые специальный реестр записи я могу использовать.

оба эти метода не совсем соответствуют моему счету. Я хочу нажать F5 и автоматически подключить текущий экземпляр visual studio к дочернему процессу. Можно ли это сделать?

если есть плагин для VS, который позволяет мне достичь этой функциональности, я был бы доволен им.

редактировать

Я закончил со следующим макросом:

Public Sub CompileRunAndAttachToEhExtHost()

    DTE.Solution.SolutionBuild.Build(True)
    DTE.Solution.SolutionBuild.Debug()

    Dim trd As System.Threading.Thread = New System.Threading.Thread(AddressOf AttachToEhExtHost)
    trd.Start()

End Sub

Public Sub AttachToEhExtHost()
    Dim i As Integer = 0
    Do Until i = 50
        i = i + 1
        Try

            For Each proc As EnvDTE.Process In DTE.Debugger.LocalProcesses
                If (proc.Name.IndexOf("ehexthost.exe") <> -1) Then
                    proc.Attach()
                    Exit Sub
                End If
            Next
        Catch e As Exception
            ' dont care - stuff may be busy 
        End Try
        Threading.Thread.Sleep(100)
    Loop
End Sub

кроме того, я описал процесс, как этого на моем блоге.

5 ответов


Я бы использовал макрос. Я переопределил свою функцию F5 для присоединения к asp.net процесс вместо длинной сборки / проверки обычно выполняется. Это работает довольно хорошо для меня, и это действительно легко.

    For Each process In DTE.Debugger.LocalProcesses
        If (process.Name.IndexOf("aspnet_wp.exe") <> -1) Then
            process.Attach()
            Exit Sub
        End If
    Next

для VS2012 макросы были удалены,но вы все равно можете сделать это довольно быстро со стандартными сочетаниями клавиш. Например, для присоединения к iisexpress.exe:

Ctrl + Alt + p - выводит диалоговое окно присоединить к процессу

Я - переходит к первому процессу, начинающемуся с i в списке (для меня это iisexpress.exe)

Enter - attaches

для супер скорости, вы также можете выключите предупреждение о безопасности Visual Studio Attach при отладке IIS.


Проверьте плагин VisualStudio, который я написал, с именем лень.


Я отлаживал плагин C++ во внешнем порожденном процессе, который разбился, бросив исключение при запуске, и это отлично сработало для меня:

добавить бесплатное подключить расширение для Visual Studio. Попросите его повторно присоединить к имени процесса перед его запуском. Он появится модальное диалоговое окно, говорящее, что он ждет запуска имени процесса.

теперь запустите процесс, и отладчик Visual Studio немедленно присоединится, поймав исключения и попадание в точки останова.

(Это также было в медиа-плагине, исключение обычно ловилось и перестраивалось хост-процессом в контексте Delphi, поэтому мне нужно было сломаться до этого).


вы можете автоматически подключиться к процессу, нажав F5, если вы настроили что-то подобное в visual studio:

http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp

обратите внимание: есть "команда", заполненная как исполняемое имя, и " прикрепить "должно быть"да"