跟踪与.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。