Sich an einen untergeordneten Prozess automatisch in Visual Studio während des Debuggens
-
05-07-2019 - |
Frage
Wenn Plugins für Media-Center Schreiben Sie Ihre Plug-in ehexthost.exe
gehostet wird diese exe von ehshell.exe
gestartet wird, und Sie haben keine Möglichkeit, sie direkt von dem Start statt übergeben Sie einen speziellen param ehshell.exe
, die das Plugin in einem separaten Prozess starten.
Wenn wir die Medien rel="noreferrer"> ich den Prozess finden, um eine für die Befestigung zweite Prozess Art klobig, weiß ich über Debugger.Attach und auch von einigen spezielle Registrierung Einträge kann ich.
Diese beiden Methoden nicht genau meine Rechnung passen. Was ich will, ist F5 zu drücken und automatisch meine aktuelle Instanz von Visual Studio, um das Kind Prozess anhängen. Kann dies geschehen?
Wenn es ein Plugin für VS ist, die mir diese Funktionalität zu erreichen erlaubt ich zufrieden sein würde.
Bearbeiten
Ich landete mit dem folgenden Makro gehen:
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
Auch skizzierte ich den Prozess, wie man erhalten diese auf meinem Blog geht .
Lösung
Ich würde einen Makro verwenden. Ich habe meine F5 Funktion neu definiert die asp.net Prozess anstelle des langen Build befestigen / validieren es führt in der Regel. Das funktioniert ziemlich gut für mich und es ist wirklich einfach.
For Each process In DTE.Debugger.LocalProcesses
If (process.Name.IndexOf("aspnet_wp.exe") <> -1) Then
process.Attach()
Exit Sub
End If
Next
Andere Tipps
Für VS2012 wurde Makros fallen gelassen, aber man kann es immer noch recht schnell mit Standard-Tastenkombinationen. Zum Beispiel iisexpress.exe anbringt:
Strg + Alt + p - bringt das Befestigen Dialog zu Prozess
i - springt zum ersten Prozess mit i in der Liste beginnen (für mich ist das iisexpress.exe)
Enter - Attaches
Für Supergeschwindigkeit, können Sie auch ausschalten Visual Studio Bringen Sie Sicherheitswarnung, wenn IIS debuggen.
Überprüfen Sie die Visual Studio-Plugin, die ich schrieb, mit dem Namen Faule .
Ich war Debuggen eines C ++ Plugin in einem extern erzeugten Prozess, der durch Auslösen einer Ausnahme beim Start abgestürzt und dies funktionierte perfekt für mich:
Fügen Sie den kostenlosen Reattach Erweiterung für Visual Studio . Stellen Sie es auf den Namen des Prozesses wieder zu befestigen, bevor es gestartet wird. Es wird ein modaler Dialog Pop sagen, es wartet auf den Prozessnamen zu starten.
Sie nun den Prozess starten und die Visual Studio-Debugger sofort angehängt werden kann, fangen Ausnahmen und schlagen Unterbrechungspunkte.
(Dies war auch in einer Media-Plugin wurde die Ausnahme der Regel durch den Host-Prozess in einem Delphi Kontext gefangen und erneut ausgelöst, damit ich brechen musste, bevor das passiert ist).
Sie können automatisch auf ein Verfahren an, indem Sie F5 drücken, wenn Sie das Setup etwas wie die in Visual Studio:
http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp
Hinweis: Es gibt „Command“ als Namen der ausführbaren Datei ausgefüllt, und „Attach“ muss mit „Ja“
sein