Je voudrais ajouter du code C # "débogage uniquement" qui ne fonctionne que si la personne qui déboge le demande. En C ++, j'avais l'habitude de faire quelque chose de similaire à ce qui suit:
void foo()
{
// ...
#ifdef DEBUG
static bool s_bDoDebugOnlyCode = false;
if (s_bDoDebugOnlyCode)
{
// Debug only code here gets executed when the person debugging
// manually sets the bool above to true. It then stays for the rest
// of the session until they set it to false.
}
#endif
// ...
}
Je ne peux pas faire exactement la même chose en C # car il n'y a pas de statique locale.
Question : Quelle est la meilleure façon d'accomplir cela en C #?
- Dois-je utiliser un champ statique de classe privée avec des directives de préprocesseur C # (
#if/#endif DEBUG
)? - Dois-je utiliser l'attribut Conditionnel (pour contenir le code), puis un champ statique de classe privée ( non entouré de directives de préprocesseur C #
#if/#endif DEBUG
?). - Autre chose?
la source
Ce que vous cherchez c'est
attribut.
Si vous écrivez par exemple une méthode comme:
tout appel que vous faites à cette méthode dans votre propre code ne sera exécuté qu'en mode débogage. Si vous construisez votre projet en mode version, même l'appel à la méthode "MyLovelyDebugInfoMethod" sera ignoré et vidé de votre binaire.
Oh et encore une chose si vous essayez de déterminer si votre code est en cours de débogage au moment de l'exécution, il est également possible de vérifier si le processus actuel est accroché par un JIT. Mais c'est tous ensemble un autre cas. Postez un commentaire si c'est ce que vous essayez de faire.
la source
Vous pouvez essayer ceci si vous n'avez besoin que du code pour s'exécuter lorsque vous avez un débogueur attaché au processus.
la source
Je pense qu'il vaut peut-être la peine de mentionner que
[ConditionalAttribute]
c'est dans l'System.Diagnostics;
espace de noms. J'ai un peu trébuché quand j'ai eu:Error 2 The type or namespace name 'ConditionalAttribute' could not be found (are you missing a using directive or an assembly reference?)
après l'avoir utilisé pour la première fois (je pensais que ça l'aurait été
System
).la source
Si vous voulez savoir si le débogage, partout dans le programme. Utilisez ceci.
Déclarez la variable globale.
Créer une fonction pour vérifier le mode de débogage
Dans la méthode initialize, appelez la fonction
Maintenant dans tout le programme. Vous pouvez vérifier le débogage et effectuer les opérations. J'espère que cela t'aides!
la source