我们在哪里使用Debug/Trace语句

P.K*_*P.K 16 c#

我使用C#(使用VS IDE)进行开发.我对Debug/Trace语句感到困惑.

我们在哪里以及为何使用这些陈述?

我经常在其他开发人员的源代码中看到这些.

有人可以提供指针吗?

Mit*_*eat 21

Debug语句仅存在于Debug构建中.

跟踪语句存在于Debug和Release版本中.

将Debug和Trace语句放在要输出某些值的位置,以便进行调试或检查.

这篇MS支持文章可能很有用:如何在Visual C#中跟踪和调试

Trace类将消息路由到侦听器:用于接受跟踪消息并将其发送到适当输出设备的类.Trace.Listeners集合包含向系统注册的侦听器的列表.调用任何Trace输出方法将向所有已注册的侦听器发送消息.名为DebugTraceListener的类会自动添加到Listeners集合中,并将消息路由到 OutputDebugStringWin32 API函数.

SysInternals DebugView应用程序将捕获通过的任何输出OutputDebugString.


Ran*_*ica 19

Debug和Trace都用于输出除应用程序的正常错误记录之外的其他消息.输出是由程序员决定的.可以编写的典型事项是方法入口/出口,方法参数值,方法返回值,正在使用的配置信息,关键性能计时等.

Debug和Trace之间的主要区别在于,发布版本中存在Trace,而Debug不存在.我发现Trace更有用,因为它允许您获得有关应用程序在生产环境中运行的其他信息(假设您添加了Trace以开始).添加跟踪消息时要考虑的一件事是,如果出现棘手的生产问题,请考虑您希望访问的信息.

Debug和Trace都是有条件编译的.Debug(默认情况下)编译为调试版本,而Trace(默认情况下)编译为版本版本.条件编译由编译标志(对于Trace:/ d:TRACE)或预处理器指令(对于Trace:#define TRACE)确定.

好处是这些语句可以在开发过程中受益,但可以通过更改编译标志轻松删除生产版本.

产量

要获取Trace的输出,需要跟踪侦听器.有一个默认的跟踪侦听器(毫不奇怪)DefaultTraceListener.的DefaultTraceListener(通过的Win32发送跟踪消息共享存储器OutputDebugString方法).

好的,但你怎么看这些跟踪消息?

最简单的方法是运行程序来为您读取信息. DebugView是事实上的标准.几乎只是启动它,消息开始出现.

您还可以使用TextWriterTraceListener或将输出定向到其他位置EventLogTraceListener.

您还可以通过配置添加跟踪侦听器:

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener"type="System.Diagnostics.TextWriterTraceListener"initializeData="TextWriterOutput.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)


如果您已经在使用日志记录提供程序(例如Enterprise Library,log4net),那么您可能希望使用他们的方法,因为他们几乎总是提供类似的条件日志记录功能.但是,它们可能无法提供与Assert或类似的功能WriteIf.