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?

Était-ce utile?

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).

Les informations de débogage ne sont visibles que lorsque vous utilisez le mode de débogage . Dans le mode de publication , aucune instruction de débogage ne sera visible (vous pouvez utiliser Tracer au lieu de Déboguer si vous souhaitez que ces instructions soient visibles en mode de publication). .

http://support.microsoft.com/kb/815788

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top