111 votes

Quelle est la différence entre Console.WriteLine() et Debug.WriteLine() ?

Quelle est la différence entre Console.WriteLine() vs Debug.WriteLine() ?

125voto

Sam Holder Points 13935

Console.WriteLine écrit sur le flux de sortie standard, soit en mode débogage, soit en mode validation. Debug.WriteLine écrit aux écouteurs de trace dans le fichier Auditeurs mais uniquement lors de l'exécution en mode débogage. Lorsque l'application est compilée dans la configuration release, les éléments Debug ne seront pas compilés dans le code.

Comme Debug.WriteLine écrit à tous les écouteurs de trace dans le Auditeurs il est possible qu'elle soit affichée à plusieurs endroits (fenêtre de sortie de Visual Studio, console, fichier journal, application tierce qui enregistre un écouteur (je crois que l'application DebugView fait ceci), etc.)

8 votes

Strictement DebugView surveille les messages enregistrés par l'appel natif de l'API Windows. OutputDebugString (et DebugPrint ). Le site DefaultTraceListener écrit à OutputDebugString C'est pourquoi DebugView voit la sortie. msdn.microsoft.com/fr/us/library/

46voto

Hans Passant Points 475940

Console.WriteLine() est destiné aux programmes en mode console. Une fonctionnalité intéressante du processus d'hébergement de Visual Studio fait apparaître sa sortie dans la fenêtre Visual Studio Output pendant le débogage pour les processus qui n'ont pas de console. C'est très utile pour le débogage mais attention, vous devez supprimer ce code (ou l'entourer d'un #ifdef DEBUG) lorsque vous êtes prêt à créer la version Release. Sinon, il ajoutera des frais inutiles à votre programme. Il est donc loin d'être idéal pour le suivi du débogage.

Debug.WriteLine() génère des informations de traçage si vous construisez avec la conditionnelle DEBUG #définie. Cette condition est activée par défaut dans la version Debug. La destination de la sortie peut être configurée dans le fichier app.exe.config. Si cette configuration n'est pas surchargée, .NET fournit automatiquement une instance de la classe DefaultTraceListener. Elle envoie le texte Debug.WriteLine() avec la fonction API Windows OutputDebugString() au débogueur. Le débogueur Visual Studio fait apparaître ce texte dans la fenêtre de sortie, tout comme Console.WriteLine().

L'avantage de Debug.WriteLine() est qu'il ne génère aucune surcharge dans la version Release, les appels sont effectivement supprimés. Cependant, elle ne prend pas en charge le formatage composite. Pour cela, vous aurez besoin de String.Format(). Pour le suivi du débogage, la classe Debug devrait être votre choix.

23voto

Si vous utilisez Console.WriteLine dans le seul but de déboguer, il vaut mieux utiliser mieux utiliser Debug.WriteLine .

Si vous voulez montrer un message à votre utilisateur (dans une application console), vous utiliseriez Console.WriteLine .

Debug.WriteLine sert uniquement à déboguer votre application. Dans mode release, vos déclarations de débogage seront ignorées.

Une autre utilisation d'une application console est de tester des assemblages privés. Au lieu de l'approche traditionnelle consistant à créer une sorte de harnais de test GUI pour tester la version compilée de la DLL, vous pouvez simplement recompiler la DLL en tant qu'application console et effectuer des entrées/sorties depuis/vers la console. J'ai trouvé cette technique plus rapide que de passer du temps à créer un harnais de test GUI.

8 votes

"Si vous voulez montrer un message à votre utilisateur, vous devez utiliser console.writeline." Cela pourrait prêter à confusion pour certaines personnes, car il ne montrera quelque chose à l'utilisateur que s'il est exécuté dans une application console.

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