跟踪与.NET BCL中的debugging

这似乎是

  • System.Diagnostics.Debug
  • System.Diagnostics.Trace

在很大程度上是相同的,除了在发布configuration中编译出debugging用法这个明显的例外。

你什么时候使用一个而不是另一个? 到目前为止,我唯一的答案就是使用Debug类来生成输出,只有在debuggingconfiguration中才能看到, Trace将保留在发布configuration中,但是这并不能真正回答我的头。

如果你要testing你的代码,为什么你会使用Debug ,因为Trace可以在没有重新编译的情况下closures?

主要的不同之处在于你指出:Debug不包含在发行版中,而Trace是。

根据我的理解,有意的区别在于开发团队可能会使用Debug来发出丰富的,描述性的消息,这些消息对于产品的消费者来说可能过于详细(或泄露),而Trace则是为了发布这些消息更具体地适用于检测应用程序。

为了回答你的最后一个问题,我想不出有什么理由使用Debug来testing我打算发布的一段代码。

希望这可以帮助。

debugging用于纯粹的debugging目的。 它在debugging执行(debugging模式)中发出丰富的消息。

跟踪有助于应用程序debugging,错误修复和分析(发布后)。

Debug类在发布模式下是没有用的。

我会考虑使用log4net进行跟踪,因为它的function更加灵活和强大。

但是对于真正的debugging消息,我从来没有想过除了我或内部的testing人员看到,我可能坚持debugging。

跟踪和debugging的唯一区别在于,当程序编译到发布版本时,跟踪语句默认包含在程序中,而debugging语句则不包含在程序中。

因此,debugging类主要用于开发阶段的debugging,而在编译和发布应用程序之后,跟踪可用于testing和优化

对于高性能敏感的代码块,留下Trace编译但是禁用可能会导致性能差异。

你已经回答了你自己的问题。 如果debugging信息留在,人们可以看到他们。 例如,假设您这样做:

 Debug.WriteLine(“使用用户名:blah和PW:pass连接到数据库”);

任何反编译代码的人都可以看到。 但是在testing过程中,这可能对您来说非常重要。

跟踪是不同的。 如果你要做跟踪,我可能只使用log4net。