64

看来

大体上是相同的,除了Debug使用是在发布配置中编译出来的显着例外。

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

如果你要检测你的代码,你为什么要使用Debug,因为Trace可以在不重新编译的情况下关闭?

4

7 回答 7

70

主要区别在于您指出的那个: Debug 不包含在发布中,而 Trace 包含。

据我了解,预期的区别在于,开发团队可能会使用 Debug 来发出丰富的描述性消息,这些消息对于产品的消费者来说可能过于详细(或暴露),而 Trace 旨在发出那种更具体地用于检测应用程序的消息。

要回答您的最后一个问题,我想不出使用 Debug 来检测我打算发布的一段代码的理由。

希望这可以帮助。

于 2008-10-07T19:07:01.083 回答
5

trace 和 debug 之间的唯一区别是,当程序编译成 release 版本时,trace 语句默认包含在程序中,而 debug 语句则不包含。

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

于 2009-05-30T13:50:15.367 回答
5

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

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

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

于 2011-12-26T06:14:58.493 回答
2

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

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

于 2008-10-07T19:04:08.203 回答
2

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

于 2008-10-07T19:08:05.607 回答
2

Trace 和 Debug 之间的完全区别:

Debug 和 Trace 都使用 System.Diagnostics 命名空间。

调试

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

痕迹

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

参考:C# 角

于 2018-06-10T09:44:00.573 回答
1

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

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

任何反编译您的代码的人都可以看到这一点。但这可能是您在测试期间了解的非常重要的事情。

迹不同。如果您要进行 Trace,我可能只使用 log4net。

于 2008-10-07T19:07:32.283 回答