.net 跟踪和调试语句

.net 跟踪和调试语句,.net,debugging,trace,.net,Debugging,Trace,我对如何使用.NET跟踪和调试类有点困惑 为什么要麻烦使用跟踪而不是调试 Trace.TraceError() Trace.TraceInformation() Trace.Assert() Debug.WriteLine() Debug.Assert() 另外,我知道在发布配置模式下,调试语句会被忽略,但是如果跟踪语句一直应用,这会对性能产生什么影响?您可以使用编译器开关独立地打开和关闭调试语句,如果您转到项目属性的构建页面,您会看到一些复选框 我的经验法则是,我使用debug获取实际的调

我对如何使用.NET跟踪和调试类有点困惑

为什么要麻烦使用跟踪而不是调试

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

Debug.WriteLine()
Debug.Assert()

另外,我知道在发布配置模式下,调试语句会被忽略,但是如果跟踪语句一直应用,这会对性能产生什么影响?

您可以使用编译器开关独立地打开和关闭调试语句,如果您转到项目属性的构建页面,您会看到一些复选框


我的经验法则是,我使用debug获取实际的调试信息,也就是说,此时变量x的值是。。。等等,并跟踪通过我的应用程序跟踪控制流(更像垃圾邮件)。

正如你所说,跟踪调用仅在你处于发布模式时执行。在发布模式下编译具有一些您可能希望在最终应用程序中获得的性能优势,并且可能还有其他您希望启用发布模式的原因。但是,有时您可能希望将信息记录到跟踪控制台,可以使用应用程序(如)查看这些信息。这些消息通常是您不一定要发送到日志输出的消息,或者即使用户已关闭日志记录,您也始终希望这些消息可用于调试目的


您当然不想向跟踪控制台发送大量信息,因为它确实会造成性能损失,但一些关键信息可能是合适的。

在最简单的级别上,它们具有不同的编译开关,即
Debug。只有当您具有
Debug
编译符号(对于发布版本不常见)时,才会切换WriteLine
等,其中as
跟踪。WriteLine
通常会包括在发布版本中

跟踪
路由具有可定制的跟踪侦听器,可通过配置进行探测<代码>调试通常作为侦听器转到调试器。当然,有第三方跟踪系统提供了更大的灵活性。

我倾向于在发布环境中使用跟踪(带有相关的TraceSwitch)来记录工作——快速调整app.config可以提供不同级别的日志记录,而无需重新编译(这可能会使问题消失)或者需要附加调试器。无论出于何种原因,仅在客户机器上出现的问题尤其方便--我使用此功能成功地从FTP类中转储登录(回到旧框架1.1天),以帮助诊断两家公司之间的网络传输问题

可能重复: