11
votes

Désactiver / supprimer les points d'arrêt des enfants?

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.

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.

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!


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.)


7 commentaires

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


3 Réponses :


2
votes

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


0 commentaires

1
votes

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


0 commentaires

1
votes

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");
}


0 commentaires