Автоматическое присоединение к дочернему процессу в Visual Studio во время отладки
При написании плагинов для медиацентра ваш плагин размещается в 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
Кроме того, я рассказал о том, как получить это в своем блоге.
Ответы
Ответ 1
Я бы использовал макрос. Я переопределил функцию 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
Ответ 2
Для VS2012 макросы были отброшены, но вы все еще можете сделать это довольно быстро со стандартными сочетаниями клавиш. Например, чтобы подключиться к iisexpress.exe:
Ctrl + Alt + p - отображает диалоговое окно Attach To Process
i - переходит к первому процессу, начинающемуся с я в списке (для меня это iisexpress.exe)
Enter - прикрепляет
Для сверхскоростной скорости вы также можете Отключить предупреждение об установке Visual Studio Attach при отладке IIS.
Ответ 3
Просмотрите плагин VisualStudio, который я написал, названный Lazy.
Ответ 4
Я отлаживал плагин С++ во внешнем порожденном процессе, который разбился, выбросив исключение при запуске, и это отлично сработало для меня:
Добавьте бесплатное Reattach Extension для Visual Studio. Попросите его подключиться к имени процесса до его запуска. Появится модальное диалоговое окно, в котором говорится, что он ждет запуска имени процесса.
Теперь запустите процесс, и отладчик Visual Studio подключится немедленно, поймав исключения и ударив точки останова.
(Это также было в медиа-плагине, исключение обычно захватывалось и возвращалось хост-процессом в контексте Delphi, поэтому мне нужно было сломаться до того, как это произошло).
Ответ 5
Вы можете автоматически присоединяться к процессу, нажав F5, если вы настроили что-то подобное в визуальной студии:
http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp
Извещение: там "Команда" заполняется как исполняемое имя, а "Прикрепить" должно быть "да"