6

J'ai été voir dans mon Visual C# 2008 RSS pour toujours maintenant:Comment: créer un point d'arrêt en utilisant des conditions? [C# Express]

http://lincolnfair.net/oldLincolnFair/mad.jpg

Je suis sûr que ce soit une VS 2010 seule caractéristique, mais je me demandais s'il est de toute façon à répliquer cela dans VS 2008?

+0

Cela a été dans Visual Studio depuis des lustres. Depuis VS2005 au moins; éventuellement VS2003. Je suis assez certain que ce n'était pas dans Visual Studio 6;) – Dan

+0

Qu'en est-il dans l'édition express? – Kredns

+2

Aucune idée à ce sujet, peur que je n'ai pas remarqué que vous utilisiez cela. Vous voudrez peut-être étiqueter votre question avec 'Visual Studio Express'? – Dan

Répondre

19

Tout comme je @Relster ai un extrait de code avec les éléments suivants

#if DEBUG 
    if(node.Name == "Book") 
     System.Diagnostics.Debugger.Break(); 
#endif 

Si node.Name == "Book" changements en fonction de la condition que je veux tester. l'emballage #if DEBUG s'assure que les contrôles ne le font jamais pour libérer le code.

Ceci est également un lot plus rapide que d'utiliser les points d'arrêt conditionnels dans Visual Studio. Lorsque vous utilisez le bp visual studio conditionnel intégré doit pénétrer dans l'application, mettre en pause tous les threads, évaluer l'expression et déterminer si elle est vraie chaque fois qu'il atteint le point d'arrêt. Dans une boucle serrée, cela peut être la différence entre une performance d'exécution presque complète et une exécution à une analyse.

+0

Up-vote pour l'utilisation de "#if DEBUG ...#endif "(J'allais faire un commentaire sur la solution acceptée à cet effet.) – Alconja

+0

J'ai dû accepter votre réponse parce que le manque de mise à jour chez Relster. – Kredns

4

Vous pouvez également le faire dans VS 2008. Je suis sûr qu'il y a plusieurs façons de le faire, mais une façon est de faire un clic droit sur le point rouge dans la marge d'un point d'arrêt existant & sélectionnez condition..., puis donnez-lui simplement une condition qui évalue à un bool et il ne casse que si c'est vrai. L'instruction conditionnelle doit avoir accès à tout ce qui est dans la portée à la ligne où le point d'arrêt est défini. Il y a aussi d'autres options dans ce menu contextuel qui vous permettent de filtrer ce qui va provoquer une rupture (par exemple seulement certains threads), break basé sur le nombre de fois que le breakpoint a été touché, exécuter des macros quand vous frappez le breakpoint , etc.

+1

Quand je clique droit sur le point d'arrêt tout ce que je vois est: supprimer le point d'arrêt, désactiver le point d'arrêt. – Kredns

+1

Hmmm ... utilisez-vous l'édition express peut-être? – Alconja

+1

yerp son manquant de l'exprès –

1

l'autre façon de le faire est de faire vos propres conditions et utiliser un appel à:

System.Diagnostics.Debugger.Break(); 

Bien qu'il ne soit pas aussi sophistiqué que la façon VS2010 de mettre des points d'arrêt, vous pouvez obtenir le même effet avec un minimum de surcharge de code. Rappelez-vous juste de prendre ces choses quand vous construisez le code de version. Remarque: Dans VS2008 et VS2005, vous pouvez définir un point d'arrêt conditionnel en définissant un point d'arrêt normal (F9 ou double clic dans la gouttière), puis en cliquant avec le bouton droit sur ce point d'arrêt pour définir la "condition ...". La possibilité de définir des points d'arrêt conditionnels n'est pas disponible dans VS2008 Express Edition.

+0

J'ai supprimé ma réponse en raison du chevauchement, mais vous devriez mentionner que VS 2008 express n'a pas de support intégré pour les points de rupture conditionnels. –

+0

@ Sam Safran, vous devriez éditer sa réponse pour devenir la réponse globale. – mmcdole

Questions connexes