如何:向应用程序代码添加跟踪语句

更新:2007 年 11 月

最常用于跟踪的方法是用于将输出写入侦听器的以下方法:WriteWriteIfWriteLineWriteLineIfAssertFail。这些方法可分为两类:WriteWriteLineFail 都无条件地发出输出,而 WriteIfWriteLineIfAssert 则检验 Boolean 条件并根据条件的值来写入或不写入。WriteIfWriteLineIf 在条件为 true 时发出输出,而 Assert 在条件为 false 时发出输出。

当设计跟踪和调试策略时,应考虑所需的输出形式。填充不相关信息的多个 Write 语句将创建难于阅读的日志。另一方面,如果使用 WriteLine 将相关语句放置在单独的行上,可能会难以区分哪些信息应该在一起。通常,当需要将来自多个信息源的信息组合起来创建单个提示性消息时,应使用多个 Write 语句;当需要创建单个完整消息时,应使用 WriteLine 语句。

写入整个行

  • 调用 WriteLineWriteLineIf 方法。

    一个回车符将附加在此方法返回的消息末尾,使 WriteWriteIfWriteLineWriteLineIf 返回的下一则消息将以如下行开始:

    Dim errorFlag As Boolean = False
    Trace.WriteLine("Error in AppendData procedure.")
    Trace.WriteLineIf(errorFlag, "Error in AppendData procedure.") 
    
    bool errorFlag = false;
    System.Diagnostics.Trace.WriteLine ("Error in AppendData procedure.");
    System.Diagnostics.Trace.WriteLineIf(errorFlag, 
       "Error in AppendData procedure.");
    
    boolean errorFlag = false;
    System.Diagnostics.Trace.WriteLine("Error in AppendData procedure.");
    System.Diagnostics.Trace.WriteLineIf(errorFlag, 
       "Error in AppendData procedure.");
    

写入部分行

  • 调用 WriteWriteIf 方法。

    WriteWriteIfWriteLineWriteLineIf 生成的下一条消息将会在由 WriteWriteIf 语句生成的消息所在的同一行上开始:

    Dim errorFlag As Boolean = False
    Trace.WriteIf(errorFlag, "Error in AppendData procedure.")
    Debug.WriteIf(errorFlag, "Transaction abandoned.")
    Trace.Write("Invalid value for data request")
    
    bool errorFlag = false;
    System.Diagnostics.Trace.WriteIf(errorFlag, 
       "Error in AppendData procedure.");
    System.Diagnostics.Debug.WriteIf(errorFlag, "Transaction abandoned.");
    Trace.Write("Invalid value for data request");
    
    boolean errorFlag = false;
    System.Diagnostics.Trace.WriteIf(errorFlag, "Error in AppendData procedure.");
    System.Diagnostics.Debug.WriteIf(errorFlag, "Transaction abandoned.");
          System.Diagnostics.Trace.Write("Invalid value for data request");
    

验证特定条件在执行方法之前或之后存在

  • 调用 Assert 方法。

    Dim I As Integer = 4
    Trace.Assert(I = 5, "I is not equal to 5.")
    
    int I = 4;
    System.Diagnostics.Trace.Assert(I == 5, "I is not equal to 5.");
    
    int I = 4;
    System.Diagnostics.Trace.Assert(I == 5, "I is not equal to 5.");
    
    说明:

    您可以将 Assert 用于跟踪和调试。此示例将调用堆栈输出到 Listeners 集合中的任何侦听器。有关更多信息,请参见托管代码中的断言Debug.Assert

请参见

任务

如何:配置跟踪开关

概念

检测和跟踪的介绍

跟踪开关

跟踪侦听器

参考

Debug.WriteIf

Debug.WriteLineIf

Trace.WriteIf

Trace.WriteLineIf

其他资源

跟踪应用程序和在应用程序中插入检测点