Comment définir des points d'arrêt conditionnels dans Visual Studio?

133

Existe-t-il un moyen simple de définir des points d'arrêt conditionnels dans Visual Studio?

Si je veux atteindre un point d'arrêt uniquement lorsque la valeur d'une variable devient quelque chose, comment puis-je le faire?

MrClan
la source
11
Notez que l'édition Express n'a pas cette fonctionnalité.
Alexei Levenkov du
1
J'utilise Express 2015 et il a la capacité de points d'arrêt conditionnels
mark.monteiro
1
L'édition communautaire de 2017 a également des points d'arrêt conditionnels
PentiumPro200

Réponses:

174

Définissez un point d'arrêt comme d'habitude. Faites un clic droit dessus. Cliquez sur Condition.

Jeff
la source
1
Dans VS 2015, vous devez survoler le point d'arrêt et cliquer sur l'icône d'engrenage pour définir les conditions
mark.monteiro
Vous voulez dire, faites un clic droit, définissez la condition, obtenez l'erreur "Condition pour un point d'arrêt a échoué" ... n'est-ce pas?
Toby Caulk
1
La réponse doit également inclure la syntaxe des instructions conditionnelles ou un lien informatif.
Andrew
50

Lorsque vous utilisez l'édition Express, vous pouvez essayer ceci:

#if DEBUG
    if( fooVariable == true )
        System.Diagnostics.Debugger.Break();
#endif

si l'instruction s'assure que dans la version de build, le point d'arrêt ne sera pas présent.

Panako
la source
3
Cela présente un grand avantage en termes de performances et de gain de temps. J'étais en train de parcourir tous les «id» int potentiels dans un de mes programmes (seulement environ 3,5 millions), ce qui ne prend que quelques secondes. J'essayais d'utiliser le point d'arrêt conditionnel, mais comme ce n'était pas dans une branche conditionnelle, cela ralentissait la vitesse d'exécution au point où, après quelques minutes, je mettrais simplement fin à la session de débogage. L'utilisation du point d'arrêt compilé l'a rendu instantané.
Goldfish Sandwich
35

Visual Studio fournit de nombreuses options pour les points d'arrêt conditionnels:

Pour définir l'un de ces

  1. Définissez un point d'arrêt.
  2. Cliquez avec le bouton droit sur le point d'arrêt et dans le menu contextuel, sélectionnez une option qui vous convient.

Ces options sont les suivantes:

  • Vous pouvez définir une condition, basée sur une expression de code que vous fournissez (sélectionnez Condition dans le menu contextuel). Par exemple, vous pouvez spécifier cela foo == 8ou une autre expression.
  • Vous pouvez faire en sorte que les points d'arrêt se déclenchent après avoir été touchés un certain nombre de fois. (sélectionnez Hit Count dans le menu contextuel). C'est une option amusante à jouer car vous n'êtes pas limité à casser sur un certain nombre de coups, mais vous avez également des options pour quelques autres scénarios. Je vous laisse le soin d'explorer les possibilités.
  • Vous pouvez définir des filtres sur l'ID de processus, l'ID de thread et le nom de la machine (sélectionnez Filtre dans le menu contextuel)
C Johnson
la source
16

Juste une autre façon de le faire, (ou si vous utilisez express) ajoutez la condition dans le code:

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}
Ignacio Soler Garcia
la source
9
  1. Définir le point d'arrêt sur la ligne
  2. Clic droit sur boule ROUGE
  3. Choisissez le point d'arrêt conditionnel
  4. Condition de configuration
Tigran
la source
8

Écrire la condition réelle peut être la partie délicate, alors j'ai tendance à

  1. Définissez un point d'arrêt régulier .
  2. Exécutez le code jusqu'à ce que le point d'arrêt soit atteint pour la première fois.
  3. Utilisez la fenêtre Exécution (Débogage> Windows> Immédiat) pour tester votre expression .
  4. Cliquez avec le bouton droit sur le point d'arrêt, cliquez sur Condition et collez votre expression .

Avantages de l'utilisation de la fenêtre Exécution:

  • Il a IntelliSense .
  • Vous pouvez être sûr que les variables de l'expression sont dans la portée lorsque l'expression est évaluée.
  • Vous pouvez être sûr que votre expression renvoie vrai ou faux .

Cet exemple est interrompu lorsque le code fait référence à une table avec le nom «Setting»:

table.GetTableName().Contains("Setting")
Andy Joiner
la source
5

Créez un point d'arrêt comme vous le feriez normalement, faites un clic droit sur le point rouge et sélectionnez «condition».

Brandon Moretz
la source
4
  1. Définissez un point d'arrêt comme d'habitude
  2. Faites un clic droit sur le point d'arrêt et sélectionnez Condition
  3. Vous verrez une boîte de dialogue indiquant "Condition de point d'arrêt"
  4. Mettez une condition dans le champ par exemple "i == 5"

Le point d'arrêt ne sera atteint que lorsque i est 5.

user423119
la source
4
  1. Définissez un point d'arrêt comme d'habitude.
  2. Cliquez avec le bouton droit sur le marqueur de point d'arrêt
  3. Cliquez sur "Condition ..."
  4. Écrivez une condition, vous pouvez utiliser des noms de variables
  5. Sélectionnez "Est vrai" ou "A changé"
Casey
la source
4

Sur Visual Studio 6.0

Alt+ F9!!!

Vorac
la source
1
-1) Cela ne fonctionne pas dans VS 2012 2) Cette question a déjà beaucoup d'autres (meilleures) réponses et 3) qui diable se soucie de VS 6.0 (sorti en 1998)? 4) Même si quelqu'un se soucie de VS 6, la question est étiquetée avec .Net qui n'avait pas de support jusqu'à la prochaine version de VS (Visual Studio .Net)
Tim Medora
7
Eh bien, les autres réponses ne fonctionnent pas sur VS 6.0. J'ai donc posté une solution.
Vorac
1

Définissez le breakpointcomme vous le faites normalement, cliquez avec le bouton droit sur le point de rupture, sélectionnez l' condionoption et définissez votre condition.

Fièvre Panda
la source
1

Créez un point d'arrêt de fonction conditionnelle:

  1. Dans la fenêtre Points d'arrêt, cliquez sur Nouveau pour créer un nouveau point d'arrêt.

  2. Dans l'onglet Fonction, tapez Inverser pour Fonction. Tapez 1 pour Ligne, tapez 1 pour Caractère, puis définissez Langue sur De base.

  3. Cliquez sur Condition et assurez-vous que la case Condition est cochée. Tapez instr.length > 0Condition, assurez-vous que l'option est vraie est sélectionnée, puis cliquez sur OK.

  4. Dans la boîte de dialogue Nouveau point d'arrêt, cliquez sur OK.

  5. Dans le menu Déboguer, cliquez sur Démarrer.

JAiro
la source
0

Si vous venez de Google, cette réponse peut être celle que vous recherchez.

  1. Cliquez sur Déboguer> Nouveau point d'arrêt> Point d'arrêt de fonction entrez la description de l'image ici

  2. là, choisissez le point d'arrêt conditionnel.

T.Todua
la source