System.Diagnostics.Debug.WriteLine dans le code de production
-
05-07-2019 - |
Question
Je devrais probablement déjà le savoir, mais je ne suis pas sûr et je ne le vois pas documenté.
J'utilise assez souvent System.Diagnostics.Debug.WriteLine pendant le processus de développement pour pouvoir suivre les modifications apportées aux variables ou aux exceptions lors du débogage du code. Cela vise à faciliter le développement et à comprendre ce qui se passe uniquement au cours du développement. Normalement, je commente le code ou le supprime lorsque je passe en production.
Je me demande ce qui se passe si j'oublie de commenter le code. Supposons, par exemple, que pendant le cycle de développement, je surveille les informations d'erreur susceptibles de consigner une connexion sting à la fenêtre de sortie à l'aide de Debug.Write Line. Ceci est évidemment acceptable tout en évoluant, mais je me demande si, lorsque je pars en direct, s’il ya un risque ici. Quelqu'un peut-il attacher un débogueur à mon exécutable réel et intercepter cette sortie? Ou est-ce quelque chose qui produit uniquement une sortie dans Visual Studio?
Et qu'en est-il lorsque nous passons du débogage à la publication? Ce code est-il ignoré par le compilateur si nous compilons pour publication?
La solution
Tous les membres de la classe de débogage sont marqués avec ConditionalAttribute , afin que les sites d’appel ne soient pas compilés dans une version Release.
Autres conseils
System.Diagnostics.Debug
Les appels de méthode ne sont présents que lorsque le & DEBUG " DEBUG " Le symbole de compilation conditionnel est défini. Par défaut, le bouton "DEBUG" le symbole est défini uniquement pour les versions de débogage.
Compilateurs supportant
ConditionalAttribute
ignorer les appels à ces méthodes à moins que " DEBUG " est défini comme une compilation conditionnelle symbole.
Comme les méthodes de débogage ont toutes l'attribut [Conditional ("DEBUG")], si vous passez de Debug à Release, vous n'aurez plus à vous en soucier, les appels à ces méthodes seront supprimés avec les autres optimisations d’une version Release).
Si vous compilez sans l'option / d: DEBUG
ou #define DEBUG
, vos appels WriteLine ne seront pas physiquement présents dans votre code de version; il n’existe aucun moyen pour un tiers de récupérer des informations sur ces appels, ceux-ci n’étant littéralement pas présents dans la version publiée.
Plus de détails ici: Classe de débogage (System.Diagnostics) sur MSDN
Presque tous les membres de Debug sont marqués avec ConditionalAttribute. Des compilateurs tels que C # ignoreront les appels à ces méthodes pendant la construction de la version, vous serez donc du côté sans danger.
Informations sur le mode ici: http://msdn.microsoft.com/en-us/ bibliothèque / system.diagnostics.debug.aspx