Автоматическое подключение к дочернему процессу в Visual Studio во время отладки
-
05-07-2019 - |
Вопрос
При написании плагинов для media center ваш плагин размещается в ehexthost.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
Кроме того, я обрисовал в общих чертах процесс того, как начни с этого в моем блоге.
Решение
Я бы использовал макрос.Я переопределил свою функцию 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 + Альт + p - вызывает диалоговое окно Прикрепить к процессу
i - переходит к первому процессу, начинающемуся с i в списке (для меня это iisexpress.exe)
Войти - прикрепляет
Для достижения сверхскоростного хода вы также можете Отключите предупреждение безопасности Visual Studio Attach при отладке IIS.
Ознакомьтесь с плагином VisualStudio, который я написал и который называется Ленивый.
Я отлаживал плагин C ++ во внешнем процессе, который потерпел крах из-за создания исключения при запуске, и это отлично сработало для меня:
Добавьте бесплатный Повторно подключить расширение для Visual Studio.Попросите его повторно подключиться к имени процесса перед его запуском.Появится модальное диалоговое окно с сообщением, что оно ожидает запуска имени процесса.
Теперь запустите процесс, и отладчик Visual Studio немедленно подключится, перехватывая исключения и достигая точек останова.
(Это также было в медиа-плагине, исключение обычно перехватывалось и повторно создавалось хост-процессом в контексте Delphi, поэтому мне нужно было прерваться, прежде чем это произойдет).
Вы можете автоматически подключиться к процессу, нажав клавишу F5, если вы настроили что-то подобное в Visual Studio:
http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp
УВЕДОМЛЕНИЕ:Там "Command" заполнено как имя исполняемого файла, а "Attach" должно быть "yes".