Comment mettez-vous une condition "si déboguise" dans le programme AC # de sorte que, au moment de l'exécution, il ignorera un ensemble de code si vous exécutez en mode de débogage et que vous exécutez un bloc de code si le programme est Ne pas courir en mode de débogage? Une situation dans laquelle cela peut être utilisé est si un timbre de temps est pris au début d'un bloc et un autre timbre de temps est pris à la fin. Ils vont à peine différer au moment de l'exécution. Pourtant, si vous entrez dans le code du mode de débogage, ils différeront beaucoup, et des conditions d'erreur dans un "SI BLOCK" pourraient être expulsées menant à l'exécution inattendue (Pun) de certains code. P>
7 Réponses :
Vous venez de mettre votre code dans un bloc comme celui-ci:
#IF DEBUG //code goes here #endif
Sur débogueur.isattached code>, je pense que ce sera vrai 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 de bord où vous ne pouvez pas comprendre ce qui ne va pas, cela peut aider. Assurez-vous simplement que votre code «débogage» ne causera pas de problèmes dans un environnement de production si vous utilisez du débogage à distance.
+1 @nelson: Débogage à distance (attacher un débogueur) est le seul moyen de déboguer un service Windows.
@Snorfus - En fait, ce n'est pas complètement vrai. :) Je ne trouve pas le code maintenant (que j'ai copié d'un site Web), mais j'ai un service mis en place d'une manière que si je choisis la construction "Debug", il fonctionne à l'intérieur de Visual Studio avec une capacité de débogage normale. Si je choisis "Libération", il construit le service installable normal qui ne peut être débogué que avec le débogage à distance. Si vous souhaitez déjà qu'un service fonctionne avec des symboles de débogage, je suppose que vous pouvez créer une nouvelle configuration de construction (service de débogage-normal).
@Nelson: Très intéressant, si vous pouvez trouver le code / article que j'aimerais voir (je vais commencer à me regarder moi-même). Je sortais de l'article MSDN ici: MSDN.MicRosoft. COM / EN-US / Bibliothèque / 7A50SYSB3 (vs.80) .aspx .
@Snorfus: Ouais, et normalement, vous ne pouvez pas le déboguer de cette façon, mais certaines personnes proposent des idées ingénieuses. Je pense qu'il s'agissait essentiellement d'une application de console et d'exécution manuelle sur placet (). Je devrais l'avoir d'ici demain.
Utilisez l'instruction de préprocesseur #IF:
#if debug // run in debug mode #else // run if not in debug mode #endif
#if DEBUG // something #elif // some other thing #endif
@Kevindtimm: Ah, a raté ce point. Ne vous dérange pas de moi, je donne juste les mauvaises réponses
Vous pouvez également utiliser l'attribut sur les méthodes. P> p>
#if (DEBUG) ... #else ... #endif see here: http://bloggingabout.net/blogs/rick/archive/2005/03/10/2396.aspx
@Kevindtimm: Bien que le questionneur indique "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 veuille sauter sur le si (ittookalongtime) code> Stuff lors du mode de débogage, car dans le mode de débogage, nous nous attendons à ce que cela puisse prendre beaucoup de temps ... alors pourquoi ne pas simplement m'assurer que le
Si (itookalongtime) code> est exclu lorsque nous compilons pour le débogage?
Parce que ce n'est pas ce qu'il a demandé :) Il souhaitait un moyen d'activer un drapeau à des fins de débogage, cela pourrait aussi facilement être un moyen (à l'avenir) pour activer la journalisation (par exemple).
Quelques détails: P>
à l'aide de System.Diagnostics; Code> Li>
ul>
la seule réponse qui répond à la question
Comme toutes les autres réponses (mais une) ne répondent pas à votre question, laissez-moi essayer:
Si vous souhaitez avoir un interrupteur d'exécution, vous aurez besoin d'un moyen d'obtenir les informations de votre environnement ou de la ligne de commande. . De plus, une fois que vous avez obtenu cette information, vous devrez l'appliquer à votre programme. P>
1) Pour cela, vous aurez besoin d'une variable globale. P>
if (bDebug) { // do something }