Adjuntar a un proceso hijo automáticamente en Visual Studio durante la depuración
-
05-07-2019 - |
Pregunta
Al escribir complementos para el centro de medios, su complemento se aloja en ehexthost.exe
, este exe se inicia desde ehshell.exe
y no tiene forma de iniciarlo directamente, en su lugar pasa un parámetro especial a ehshell.exe
que iniciará el complemento en un proceso separado.
Cuando estamos depurando navegador de medios encuentro el proceso de adjuntar a un segundo tipo de proceso torpe, sé sobre Debugger.Attach y también de algunos registro especial entradas que puedo usar.
Ambos métodos no se ajustan exactamente a mi factura. Lo que quiero es presionar F5 y hacer que mi instancia actual de Visual Studio se adjunte al proceso secundario automáticamente. Se puede hacer esto?
Si hay un plugin para VS que me permita lograr esta funcionalidad, me encantaría.
EDIT
Terminé yendo con la siguiente 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
Además, describí el proceso sobre cómo poner esto en marcha en mi blog.
Solución
Yo usaría una macro. He redefinido mi función F5 para adjuntarla al proceso asp.net en lugar de la compilación / validación larga que generalmente realiza. Esto funciona bastante bien para mí y es muy 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
Otros consejos
Para VS2012, las macros se han eliminado, pero aún puede hacerlo con bastante rapidez con los métodos abreviados de teclado estándar. Por ejemplo, para adjuntar a iisexpress.exe:
Ctrl + Alt + p : muestra el cuadro de diálogo Adjuntar al proceso
i : pasa al primer proceso que comienza con i en la lista (para mí, esto es iisexpress.exe)
Enter - adjunta
Para la velocidad máxima, también puede Desactivar Visual Studio adjunta una advertencia de seguridad al depurar IIS .
Vea el complemento de VisualStudio que escribí, llamado Lazy .
Estaba depurando un complemento de C ++ en un proceso generado externamente que se bloqueó al lanzar una excepción al inicio y esto funcionó perfectamente para mí:
Agregue la versión gratuita Reattach Extension para Visual Studio . Pídale que se vuelva a unir al nombre del proceso antes de que se inicie. Aparecerá un cuadro de diálogo modal que dice que está esperando que se inicie el nombre del proceso.
Ahora inicie el proceso y el depurador de Visual Studio se adjuntará inmediatamente, detectando excepciones y alcanzando puntos de interrupción.
(Esto también estaba en un complemento de medios, la excepción normalmente fue detectada y devuelta por el proceso del host en un contexto Delphi, así que tuve que interrumpir antes de que eso ocurriera).
Puede adjuntar automáticamente a un proceso presionando F5, si configura algo así en Visual Studio:
http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp
aviso: Hay " Comando " rellenado como un nombre ejecutable, y " Adjuntar " debe ser " yes "