65 votes

System.Diagnostics.Debug.WriteLine dans le code de production

Je devrais probablement le savoir déjà, mais je n'en suis pas sûr et je ne le vois pas documenté.

J'utilise assez souvent System.Diagnostics.Debug.WriteLine au cours du processus de développement pour pouvoir suivre les modifications apportées aux variables ou aux exceptions pendant le débogage du code. Cela a pour but de faciliter le développement et la compréhension de ce qui se passe. uniquement pendant le développement. Normalement, je commente le code ou je le supprime lorsque je passe en production.

Je me demande ce qui se passe si j'oublie de commenter le code. Disons, par exemple, qu'au cours du cycle de développement, je suis les informations d'erreur qui peuvent enregistrer un blocage de connexion dans la fenêtre de sortie en utilisant Debug.Write Line. Cela ne pose évidemment pas de problème pendant le développement, mais je me demande si cela ne présente pas un risque lorsque le système sera opérationnel. Quelqu'un peut-il attacher un débogueur à mon exécutable en direct et piéger cette sortie ? Ou est-ce quelque chose qui ne produit que des résultats dans Visual Studio ?

Et qu'en est-il lorsque nous passons de la phase de débogage à la phase de publication ? Ce code sera-t-il ignoré par le compilateur si nous compilons pour la version finale ?

78voto

Phil Devaney Points 8595

Tous les membres de la classe Debug sont marqués par le symbole Attribut conditionnel Les sites d'appel ne seront donc pas compilés dans une version Release.

17voto

Mitch Wheat Points 169614

System.Diagnostics.Debug ne sont présents que lorsque le symbole de compilation conditionnelle "DEBUG" est défini. Par défaut, le symbole "DEBUG" est défini uniquement pour les compilations de débogage.

Les compilateurs qui supportent ConditionalAttribute ignorer les appels à ces méthodes, sauf si "DEBUG" est défini comme un symbole de compilation conditionnel.

12voto

Agent_9191 Points 5466

Comme les méthodes de débogage ont toutes l'attribut [Conditional("DEBUG")], si vous passez de Debug à Release, vous n'aurez pas à vous en préoccuper car les appels à ces méthodes seront supprimés (avec les autres optimisations d'une version Release).

7voto

Marc Points 574

Les informations de débogage ne sont visibles que lorsque vous exécutez en mode Mode débogage . Sur Mode de libération aucune déclaration de débogage ne sera visible (vous pouvez utiliser la fonction Trace au lieu de Déboguer si vous voulez que ces déclarations soient visibles en mode Release).

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

2voto

Colin Pickard Points 23922

Si vous compilez sans l'option /d:DEBUG ou #define DEBUG Il n'y a aucun moyen pour une tierce partie de récupérer des informations à partir de ces appels, puisqu'ils ne sont pas présents dans la version finale.

Plus de détails ici : Classe de débogage (System.Diagnostics) sur MSDN

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X