Se fixer à un processus enfant automatiquement dans Visual Studio pendant le débogage
lors de l'écriture de plugins pour media center votre plugin est hébergé dans ehexthost.exe
cet exe est lancé à partir de ehshell.exe
et vous n'avez aucun moyen de le lancer directement, à la place vous passez un param spécial à ehshell.exe
qui lancera le plugin dans un processus séparé.
quand nous déboguons Media browser je trouve que le processus de fixation à un deuxième processus sorte de clunky, je sais À propos du Débogueur.Joindre et aussi de certains registre spécial entrées que je peux utiliser.
ces deux méthodes ne correspondent pas exactement à ma facture. Ce que je veux c'est Appuyer sur F5 et avoir mon instance actuelle de visual studio attachée au processus enfant automatiquement. Cela peut-il être fait?
S'il y a un plugin pour VS qui me permet d'atteindre cette fonctionnalité, je m'en contenterai.
MODIFIER
j'ai fini par aller avec le macro suivante:
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
aussi, j'ai souligné le processus sur la façon de obtenir ce va sur mon blog.
5 réponses
j'utiliserais une macro. J'ai redéfini ma fonction F5 pour l'attacher à la asp.net processus au lieu de la construction/validation longue il exécute habituellement. Cela fonctionne assez bien pour moi et c'est vraiment facile.
For Each process In DTE.Debugger.LocalProcesses
If (process.Name.IndexOf("aspnet_wp.exe") <> -1) Then
process.Attach()
Exit Sub
End If
Next
pour VS2012, les macros ont été supprimées, mais vous pouvez encore le faire assez rapidement avec des raccourcis clavier standard. Par exemple, attacher à iisexpress.exe:
Ctrl + Alt + p - ouvre l'Attacher Au Processus de dialogue
je , accède à la le premier processus commençant par i dans la liste (pour moi, c'est iisexpress.exe) 151910920"
entrer - attaches
pour super speed, vous pouvez aussi désactiver Visual Studio Attach Security warning lors du débogage de IIS .
regardez le plugin VisualStudio que j'ai écrit, nommé Lazy .
Je déboguais un plugin C++ dans un processus externe qui s'est écrasé en lançant une exception au démarrage et cela a fonctionné parfaitement pour moi:
Ajoutez gratuitement Rattacher Extension pour Visual Studio . Demandez - lui de rattacher à nouveau le nom du processus avant de le lancer. Il affichera un dialogue modal disant qu'il attend que le nom du processus soit lancé.
lance maintenant le processus et le débogueur Visual Studio attachera immédiatement, en attrapant les exceptions et en frappant les points d'arrêt.
(c'était aussi dans un plugin média, l'exception était normalement attrapée et réarrangée par le processus hôte dans un contexte Delphi donc j'avais besoin de casser avant que cela ne se produise).
vous pouvez automatiquement vous attacher à un processus en appuyant sur F5, si vous configurez quelque chose comme cela dans visual studio:
http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp
notice: il y a une commande remplie comme nom exécutable, et "Attach" doit être " yes "