Question

Je suis un peu confus quant à l'utilisation des classes .NET Trace et Debug.

Pourquoi voudriez-vous utiliser Trace au lieu de Debug?

Trace.TraceError()
Trace.TraceInformation()
Trace.Assert()

Debug.WriteLine()
Debug.Assert()

De plus, je comprends que les instructions de débogage sont ignorées lorsque vous êtes en mode de configuration dans la version, mais si les instructions de trace s'appliquent tout le temps, en quoi cela affecte-t-il les performances?

Était-ce utile?

La solution

Au niveau le plus simple, ils ont différents commutateurs de compilation - c.-à-d. Debug.WriteLine , etc. n'est basculé que si vous avez le symbole de compilation DEBUG (inhabituel pour les versions release) , où-comme Trace.WriteLine sera généralement inclus même dans les versions finales.

La route Trace a des écouteurs de trace personnalisables, qui peuvent être intégrés via la configuration; Debug va généralement à un débogueur en tant qu'auditeur. Bien sûr, il existe des systèmes de trace tiers offrant beaucoup plus de flexibilité.

Autres conseils

Vous pouvez activer et désactiver indépendamment un compilateur. Si vous accédez à la page de construction des propriétés de votre projet, vous avez des cases à cocher.

Pour moi, la règle générale est d’utiliser Debug pour les informations de débogage réelles, c’est-à-dire que la variable x à ce stade est ... etc, et Trace pour suivre le flux de contrôle via mon application (davantage de spam).

Comme vous le dites, les appels de trace ne sont exécutés que lorsque vous êtes en mode de libération. Compiler en mode Release présente certains avantages en termes de performances que vous pouvez souhaiter dans l'application finale et il peut y avoir d'autres raisons pour lesquelles vous souhaitez activer le mode Release. Toutefois, il peut arriver que vous souhaitiez enregistrer des informations sur la console de suivi, qui peuvent être affichées à l'aide d'applications telles que DbgView de SysInternal . Il s’agit généralement de messages que vous ne souhaitez pas nécessairement envoyer vers une sortie de journal ou que vous souhaitez toujours disposer à des fins de débogage, même si l'utilisateur a désactivé la journalisation.

Vous ne voudriez certainement pas envoyer beaucoup d'informations à la console Trace, car cela influe sur les performances, mais certaines informations essentielles peuvent être appropriées.

J'ai tendance à utiliser Trace (avec un TraceSwitch associé) pour les efforts de journalisation dans les environnements de publication. Un ajustement rapide du fichier app.config peut alors donner différents niveaux de journalisation sans nécessiter de recompilation (ce qui peut poser problème). de toute façon) ou la nécessité d’attacher un débogueur. Particulièrement utile pour les problèmes qui ne se produisent que sur les machines des clients pour quelque raison que ce soit - je l’ai utilisé pour vider la journalisation d’une classe FTP (dans l’ancien Framework 1.1 jours) pour diagnostiquer les problèmes de transfert de réseau entre deux entreprises

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