.NET BCL中的跟踪与调试

时间:2008-10-07 19:00:51

标签: c# .net debugging instrumentation

似乎

基本相同,但明显的例外是在发布配置中编译了 Debug 用法。

你什么时候使用一个而不是另一个?到目前为止我唯一能解决的问题就是你使用 Debug 类来生成只在调试配置中看到的输出,而 Trace 将保留在一个发布配置,但这并没有真正回答我脑海中的问题。

如果您要修改代码,为什么要使用调试,因为可以在不重新编译的情况下关闭跟踪

7 个答案:

答案 0 :(得分:55)

主要区别在于您指出:调试不包含在发行版中,而Trace是。

据我所知,预期的差异在于,开发团队可能会使用Debug发出丰富的描述性消息,这些消息可能对产品的消费者来说过于详细(或显露),而Trace旨在发出更专门用于检测应用程序的消息类型。

要回答你的上一个问题,我想不出有什么理由使用Debug来检测我打算发布的一段代码。

希望这有帮助。

答案 1 :(得分:5)

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

Trace有助于应用程序调试,错误修复和分析(发布后)。

Debug类在发布模式下没用。

答案 2 :(得分:4)

跟踪和调试之间的唯一区别是,当程序编译为发布版本时,默认情况下会在程序中包含跟踪语句,而调试语句则不包含。

因此,调试类主要用于开发阶段的调试,而trace可以在编译和发布应用程序后用于测试和优化

答案 3 :(得分:2)

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

但是对于真正的调试消息,除了我或内部测试人员之外,我从不打算让任何人看到,我可能会坚持使用Debug。

答案 4 :(得分:2)

对于高性能敏感的代码块,保留Trace编译但禁用的Trace可能会产生性能差异。

答案 5 :(得分:1)

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

Debug.WriteLine("Connecting to DB with username: blah and PW: pass");

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

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

答案 6 :(得分:1)

这是Trace和Debug之间的完全区别: Debug和Trace都使用System.Diagnostics命名空间。

调试

  • 它使用Debug类。
  • 它用于调试版本。
  • 它使用应用程序开发的时间。
  • 在调试模式下,编译器会在可执行文件中插入一些调试代码。
  • Debug类仅在调试模式下有效。
  • 无法使用Debug进行性能分析。
  • 调试用于在程序中查找错误。
  • 对于Debug,我们可以使用Debug.Write()方法。
  • Debug与主程序执行在同一个线程中运行。

微量

  • 它使用Trace类。
  • 当程序编译为已发布的版本时,默认情况下包含Trace语句。
  • 即使在编译和发布应用程序之后,Trace类也用于测试和优化。
  • 跟踪类在调试模式和发布模式下都有效。
  • Trace以不同的线程形式运行主程序执行线程。
  • 对于Trace,我们可以使用Trace.Write()方法。
  • 它使用应用程序部署的时间。

参考:csharp corner