web-dev-qa-db-fra.com

Trace vs Debug dans .NET BCL

Il semble que le 

sont en grande partie les mêmes, à l'exception notable du fait que l'utilisation de Debug est compilée dans une configuration de version. 

Quand utiliseriez-vous l'un et pas l'autre? La seule réponse à cette question que j’ai découverte jusqu’à présent est simplement que vous utilisez la classe Debug pour générer une sortie visible uniquement dans la configuration de débogage, et Trace restera dans une configuration de version, mais ne répond pas vraiment à la question dans ma tête.

Si vous voulez instrumenter votre code, pourquoi utiliseriez-vous jamais Debug, puisque Trace peut être désactivé sans recompiler?

53
Ben Collins

La principale différence est celle que vous indiquez: le débogage n’est pas inclus dans la version, contrairement à Trace.

Si je comprends bien, la différence recherchée est que les équipes de développement peuvent utiliser Debug pour émettre des messages descriptifs riches qui risquent d’être trop détaillés (ou trop révélateurs) pour le (s) consommateur (s) d’un produit, alors que Trace est conçu des messages plus spécifiquement orientés vers l’instrumentation d’une application.

Pour répondre à votre dernière question, je ne vois aucune raison d'utiliser Debug pour instrumenter un morceau de code que je voulais publier.

J'espère que cela t'aides.

52
Jared

Le débogage est utilisé à des fins de débogage pur. Il émet des messages riches en exécution de débogage (mode débogage).

Trace aide au débogage, à la correction de bogues et au profilage d'applications (après la publication).

La classe Debug n'est d'aucune utilité en mode release.

5
Raj

La seule différence entre trace et debug est que les instructions de trace sont incluses par défaut dans le programme lorsqu'il est compilé dans une version release, contrairement aux instructions de débogage.

Ainsi, la classe de débogage est principalement utilisée pour le débogage dans la phase de développement, tandis que la trace peut être utilisée pour les tests et l'optimisation après la compilation et la publication de l'application.

4
sandy101

J'examinerais l'utilisation de log4net pour le traçage car ses fonctionnalités sont beaucoup plus flexibles et robustes.

Mais pour les vrais messages de débogage que je n'ai jamais l'intention de voir, à l'exception de moi ou d'un testeur interne, je resterais probablement avec Debug.

2
Michael Burr

Pour les blocs de code extrêmement sensibles aux performances, le fait de laisser Trace compilé mais non désactivé peut avoir une incidence sur les performances. 

2
Kevin Dente

Vous avez répondu à votre propre question. Si les messages de débogage sont restés, les gens pourraient les voir. Par exemple, disons que vous faites:

 Debug.WriteLine ("Connexion à la base de données avec nom d'utilisateur: blah et PW: pass"); 

Toute personne qui décompile votre code peut voir cela. Mais cela peut être quelque chose d'extrêmement important que vous sachiez pendant les tests. 

La trace est différente. Si vous envisagez de faire Trace, j'utiliserais probablement simplement log4net. 

1
Cory Foy

C'est la différence entre Trace et Debug: Debug et Trace utilisent tous deux l'espace de noms System.Diagnostics.

Déboguer

  • Il utilise la classe Debug.
  • Il utilise dans la construction du débogage.
  • Il utilise le temps de développement de l'application.
  • En mode débogage, le compilateur insère du code de débogage dans l'exécutable.
  • La classe de débogage ne fonctionne qu'en mode débogage.
  • L'analyse des performances ne peut pas être effectuée à l'aide de Debug.
  • Le débogage utilise pour trouver une erreur dans le programme.
  • Pour Debug, nous pouvons utiliser la méthode Debug.Write ().
  • Le débogage s'exécute dans le même thread que l'exécution du programme principal.

Trace

  • Il utilise la classe de trace.
  • L'instruction de trace inclut par défaut lorsque le programme est compilé dans la version publiée.
  • La classe de trace est utilisée pour les tests et l'optimisation même après la compilation et la publication d'une application. 
  • La classe de trace fonctionne dans les deux cas, le mode débogage ainsi que le mode de libération.
  • La trace s'exécute dans un programme d'exécution différent du thread principal.
  • Pour Trace, nous pouvons utiliser la méthode Trace.Write (). 
  • Il utilise le temps de déploiement de l'application.

référence: coin csharp

0
Navid_pdp11