Anexar a um processo filho automaticamente no Visual Studio durante a depuração
-
05-07-2019 - |
Pergunta
Ao escrever plugins para o centro de seu plugin está hospedado em ehexthost.exe
este exe é lançado a partir ehshell.exe
e você não tem nenhuma maneira de lançar-lo diretamente mídia, em vez de passar um parâmetro especial para ehshell.exe
que irá lançar o plugin em um processo separado.
Quando estiver depurando acho que o processo de anexar a um segundo processo espécie de desajeitado, eu sei sobre Debugger.Attach e também de algumas registro especial entradas que eu possa usar.
Ambos os métodos não se encaixam exatamente a minha conta. O que eu quero é pressionar F5 e ter a minha instância atual do visual studio anexar ao processo filho automaticamente. isso pode ser feito?
Se houver um plug-in para VS que me permite atingir essa funcionalidade eu ficaria feliz com ele.
Editar
Eu acabei indo com a seguinte macro:
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
Além disso, eu delineado o processo sobre a forma de obter este indo no meu blog.
Solução
Gostaria de usar um macro. Eu já redefiniu a minha função F5 para anexar ao processo asp.net, em vez da longo build / validá-lo normalmente executa. Isso funciona muito bem para mim e é muito fácil.
For Each process In DTE.Debugger.LocalProcesses
If (process.Name.IndexOf("aspnet_wp.exe") <> -1) Then
process.Attach()
Exit Sub
End If
Next
Outras dicas
Para VS2012, macros foram retiradas, mas você ainda pode fazê-lo muito rapidamente com atalhos de teclado padrão. Por exemplo, para anexar a iisexpress.exe:
Ctrl + Alt + p - traz a anexar ao processo de diálogo
i - salta para o primeiro processo que começa com i na lista (para mim isso é iisexpress.exe)
Enter - adidos
Para super velocidade, você também pode Desligue Visual Studio Anexar aviso de segurança quando a depuração IIS .
Confira o VisualStudio plugin que eu escrevi, chamado preguiçoso .
Eu estava a depuração de um C ++ plugins em um processo gerado externamente que caiu lançando uma exceção na inicialização e isso funcionou perfeitamente para mim:
Adicionar a livre Reanexar Extension for Visual Studio . Pedi-lo a recolocar o nome do processo antes de ser lançado. Ele irá aparecer um diálogo modal dizendo que está aguardando o nome do processo para o lançamento.
Agora lançar o processo e o depurador Visual Studio irá anexar imediatamente, pegando exceções e bater pontos de interrupção.
(Esta foi também em uma mídia plugin, a exceção foi normalmente capturados e relançada pelo processo de host em um contexto Delphi assim que eu precisava para quebrar antes que isso acontecesse).
Você pode anexar automaticamente a um processo pressionando F5, se você configurar algo como isso no visual studio:
http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp
AVISO: Há "Command" cheio como um nome do executável, e "Anexar" deve ser "sim"