如何:向应用程序代码添加跟踪语句
更新:2007 年 11 月
最常用于跟踪的方法是用于将输出写入侦听器的以下方法:Write、WriteIf、WriteLine、WriteLineIf、Assert 和 Fail。这些方法可分为两类:Write、WriteLine 和 Fail 都无条件地发出输出,而 WriteIf、WriteLineIf 和 Assert 则检验 Boolean 条件并根据条件的值来写入或不写入。WriteIf 和 WriteLineIf 在条件为 true 时发出输出,而 Assert 在条件为 false 时发出输出。
当设计跟踪和调试策略时,应考虑所需的输出形式。填充不相关信息的多个 Write 语句将创建难于阅读的日志。另一方面,如果使用 WriteLine 将相关语句放置在单独的行上,可能会难以区分哪些信息应该在一起。通常,当需要将来自多个信息源的信息组合起来创建单个提示性消息时,应使用多个 Write 语句;当需要创建单个完整消息时,应使用 WriteLine 语句。
写入整个行
调用 WriteLine 或 WriteLineIf 方法。
一个回车符将附加在此方法返回的消息末尾,使 Write、WriteIf、WriteLine 或 WriteLineIf 返回的下一则消息将以如下行开始:
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.");
写入部分行
-
由 Write、WriteIf、WriteLine 或 WriteLineIf 生成的下一条消息将会在由 Write 或 WriteIf 语句生成的消息所在的同一行上开始:
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。