Comment mettre une condition "IF DEBUG" dans le programme aC# afin que, lors de l'exécution, il ignore un ensemble de code si vous exécutez en mode Debug et pourtant, exécutez un bloc de code si le programme n'est pas en cours d'exécution en mode débogage? Une situation où ceci peut être utilisé est si un horodatage est pris au début d'un bloc et un autre horodatage est pris à la fin. Ils ne différeront guère au moment de l'exécution. Cependant, si vous passez en revue le code en mode débogage, ils seront très différents, et les conditions d'erreur dans un "if block" pourraient être éjectées, conduisant à l'exécution prématurée (pun) d'un code.Comment mettre une condition "IF DEBUG" dans un programme C#?
Répondre
Vous venez de mettre votre code dans un bloc comme celui-ci:
#IF DEBUG
//code goes here
#endif
Ce n'est pas une chose d'exécution, ceci est une directive préprocesseur, ce qui signifie que le code dans ce bloc ne sera pas même compilé et la volonté ne pas être inclus.
Si vous voulez vérifier lors de l'exécution si vous le débogage, vous pouvez vérifier Debugger.IsAttached
Utilisez le #if instruction préprocesseur:
#if debug
// run in debug mode
#else
// run if not in debug mode
#endif
ne fonctionne pas voir OP ... de sorte que, au moment de l'exécution ... – KevinDTimm
#if DEBUG
// something
#elif
// some other thing
#endif
ne fonctionne pas voir OP ... de sorte que, au moment de l'exécution ... – KevinDTimm
@KevinDTimm: Ah, manqué ce point. Ne me dérange pas, je donne juste les mauvaises réponses – simendsjo
Vous pouvez également utiliser le
[Conditional("Debug")]
attribut sur les méthodes.
ne fonctionne pas voir OP ... de sorte que, au moment de l'exécution ... – KevinDTimm
#if (DEBUG)
...
#else
...
#endif
voir ici: http://bloggingabout.net/blogs/rick/archive/2005/03/10/2396.aspx
ne fonctionne pas voir OP ... de sorte que, lors de l'exécution ... – KevinDTimm
@KevinDTimm: Bien que l'interrogateur dise "au moment de l'exécution", je ne vois pas pourquoi son scénario spécifique ne pouvait pas être traité par la directive du préprocesseur. Il semble qu'il veut ignorer le truc 'if (ItTookALongTime)' en mode débogage, car en mode débogage, nous attendons que ça prenne du temps ... alors pourquoi ne pas vérifier le 'if (ItTookALongTime)' est exclu lorsque nous compilons pour le débogage? –
parce que ce n'est pas ce qu'il a demandé :) il voulait un moyen d'activer un drapeau à des fins de débogage, cela pourrait tout aussi bien être un moyen (à l'avenir) d'activer la journalisation (par exemple). – KevinDTimm
Un couple plus de détails:
- Vous pouvez envelopper une méthode entière ou juste un bloc de code ou juste une ligne de code.
- Vous devez ajouter
using System.Diagnostics;
la seule réponse qui répond à la question – KevinDTimm
Comme toute autre réponse (mais) ne répond pas à votre question, je vais essayer:
Si vous souhaitez avoir un commutateur d'exécution, vous aurez besoin d'un façon d'obtenir les informations de votre environnement ou de la ligne de commande. De plus, une fois que vous obtenez cette information, vous devrez l'appliquer à votre programme.
1) Pour cela, vous aurez besoin d'une variable globale.
bool bDebug;
2) obtenir les informations de débogage
bDebug = strcmp (getEnv ("DebuggingMode"), "1"); // you'll need to mess with this a little - do 'man getenv' and 'man strcmp' for an understanding of what I'm doing
- ou -
utiliser la fonction getopt()
pour savoir si le débogage est désactivé ou
3) tous les placez dans votre code que vous voulez que le débogage soit activé, vérifiez si bDebug est set
if (bDebug) {
// do something
}
- 1. Un bogue PHP dans une condition if-else-if?
- 2. Aide if-else dans C Programme
- 3. Comment utiliser un module avec une condition if
- 4. Comment utiliser la condition OU dans une instruction JavaScript IF?
- 5. Comment créer une condition particulière if condition avec Django?
- 6. Comment mettre vos fichiers exécutables dans un répertoire bin/Debug
- 7. Ruby 'if' condition dans rjs
- 8. if condition in nant
- 9. comment écrire une condition if cas dans la procédure stockée
- 10. Comment puis-je gérer une condition if dans jQuery
- 11. Est-il correct d'utiliser #if directive debug en C#?
- 12. Rails - validates_associated avec un: if condition
- 13. comment-mettre-debug-breakPoint-dans-codedom-compiled-code
- 14. Placement d'une boucle foreach dans une condition if
- 15. Comment mettre une instruction IF dans une requête MySQL
- 16. ASP.NET MVC IF condition dans la vue
- 17. if (condition, then, else) dans Oracle
- 18. Mettre une fonction de clic href dans un if-else
- 19. condition if-else pour mettre à jour une table dans une procédure stockée dans SQL Server 2005
- 20. Comment mettre en surbrillance le texte dans une zone de texte dans un programme Winforms C#?
- 21. vue asp.mvc enteres #IF DEBUG dans la configuration de libération
- 22. Conversion ERB vs HAML d'une condition if?
- 23. MySQL UPDATE en utilisant la condition IF
- 24. Mettre une simple déclaration if-then-else sur une ligne
- 25. "Impossible de démarrer le programme" (Debug)
- 26. Comment mettre un message récapitulatif final dans un programme yacc?
- 27. Comment faire une condition?
- 28. Comment mettre une GSList dans un GHashTable?
- 29. mysql: possible de mettre un statut IF dans LEFT JOIN?
- 30. Erreur dans la condition if - MS SQL server
+1 pour le bit "runtime" – Earlz
On 'Debugger.IsAttached', je crois que ce sera le cas si vous faites du débogage à distance sur un site de production. Oui, je sais que vous ne voulez généralement pas faire cela, mais dans certains cas où vous ne pouvez pas comprendre ce qui ne va pas, cela peut aider. Assurez-vous simplement que votre code de "débogage" ne causera pas de problèmes dans un environnement de production si vous utilisez le débogage à distance. –
+1 @Nelson: Le débogage distant (attacher un débogueur) est le seul moyen de déboguer un service Windows. –