Je déboguise un site Web ASP.NET avec C # dans Visual Studio. Lorsque je fixe un point d'arrêt (pendant le débogage), au fil du temps, le point d'arrêt créé accumulera de nombreux points d'arrêt des enfants. (Voir ici .) < BR> Maintenant, parfois, lorsque je supprimai un point d'arrêt en cliquant sur le glyphe rouge, le point d'arrêt sera toujours touché la prochaine fois que la ligne est exécutée, car les points d'arrêt des enfants persistent. P>
Supprimer le point d'arrêt dans la fenêtre du point d'arrêt résoudra le problème, mais il est gênant de trouver le ou les points d'arrêt corrects lorsque vous avez de nombreux établissements. En outre, la suppression d'un point d'arrêt avec de nombreux enfants est une opération assez lente. P>
Donc pour aller à la question, puis-je désactiver cette création de points d'arrêt des enfants ou y a-t-il un moyen de supprimer rapidement tous les enfants?
Les solutions alternatives sont appréciées! p>
Veuillez noter que ce n'est pas un duplicata de ceci: Question sur Comment supprimer un point d'arrêt Visual Studio , car je vous demande comment gérer les points d'arrêt des enfants. (Bien que notre objectif prévu soit le même.) P>
3 Réponses :
Le code suivant peut être utilisé comme macro pour supprimer tous les points d'arrêt des enfants.
Sub RemoveChildBreakpoints() Dim i As Integer Dim len As Integer Dim debugger As EnvDTE.Debugger = DTE.Debugger Dim children As EnvDTE.Breakpoints For Each bp As EnvDTE.Breakpoint In debugger.Breakpoints children = bp.Children len = children.Count For i = len To 1 Step -1 children.Item(i).Delete() Next Next End Sub
Le code suivant peut être utilisé comme macro pour supprimer le point d'arrêt sur la ligne actuellement sélectionnée. (Notez que Visual Studio sélectionne automatiquement la ligne d'un point d'arrêt lorsqu'il est touché.)
Sub RemoveBreakPoint() Dim debugger As EnvDTE.Debugger = DTE.Debugger Dim children As EnvDTE.Breakpoints Dim sel As Integer = DTE.ActiveDocument.Selection.ActivePoint.Line For Each bp As EnvDTE.Breakpoint In debugger.Breakpoints If bp.File <> DTE.ActiveDocument.FullName Then Continue For End If For Each bpc As EnvDTE.Breakpoint In bp.Children If bpc.FileLine = sel Then bp.Delete() Exit For End If Next Next End Sub
Voici une macro mise à jour pour le nouveau complément de macro basé sur JavaScript ( HTTPS: / /marketplace.visualstudio.com/itemstudio.com/itemsunameAname=visualstudioplatFormteam.macrosforvisualteam.macrosforvisualteam.macrosforvisualstudio ) Pour supprimer tous les points d'arrêt des enfants:
p>
/// <reference path="C:\Users\ERobishaw\AppData\Local\Microsoft\VisualStudio\14.0\Macros\dte.js" /> try { var outputWindowPane = dte.Windows.Item("{34E76E81-EE4A-11D0-AE2E-00A0C90FFFC3}").Object.ActivePane; outputWindowPane.Activate(); outputWindowPane.OutputString("display this text in the output window panel\n"); var i; var len; var dbgr = dte.Debugger; var brk = dbgr.Breakpoints; outputWindowPane.OutputString("There are " + brk.Count + " Total\n"); //Macro.InsertText("There are " + brk.Count + " Total"); for (var bpi = 1; bpi <= brk.Count; bpi++) { outputWindowPane.OutputString("On " + bpi + " of " + brk.Count + "\n"); var bp = brk.Item(bpi); var children = bp.Children; var len = children.Count; for (var chi = len; chi > 0; chi--) { outputWindowPane.OutputString(" Children Count = " + children.Count + "\n"); children.Item(chi).Delete(); } } } catch (e) { outputWindowPane.OutputString("Error\n"); outputWindowPane.OutputString(e + "\n"); }
MMMM, pourquoi êtes-vous si sûr que votre question n'est pas une duplication? Il me semble que vous venez d'avoir une meilleure idée de la façon de poser la question. Dans tous les cas, votre réponse est définitivement sur le Microsoft Connect Page REF'D par ce message
"Mieux" indique qu'il est différent; donc pas un duplicata. :) En outre, si cette question générerait des réponses différentes, cela ne validerait-il pas également son caractère unique?
Quand il y a des réponses, nous parlerons;)
Ainsi avez-vous essayé la réponse de la question non-dupliquée? Quelles sont les causes que la réponse ne s'applique pas à votre question?
@ C.EvenHuis: Oui, ces solutions fonctionnent, mais les deux sont ennuyeux. J'ai déjà expliqué pourquoi c'est le cas pour supprimer les points d'arrêt de la fenêtre du point d'arrêt. L'arrêt de la session de débogage est également gênant, car la reprise de débogage nécessite une recompilation. La réponse ne s'applique pas ici, car la question est différente, même si le problème est le même.
Je ne pense pas que Visual Studio propose des alternatives moins gênantes, peut-être qu'un complément personnalisé pourrait être créé pour aider à désactiver les points d'arrêt des enfants, mais cela semble un peu extrait.
+1 pour avoir publié quelque chose que je ne me souviens pas de voir sur la duplication non-A-Duplicate