HOW TO:將追蹤陳述式加入至應用程式程式碼
更新: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 方法。
在這個方法所傳回的訊息尾端會附加歸位字元 (Carriage Return),使 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 集合中的任何接聽程式。如需詳細資訊,請參閱 Managed 程式碼中的判斷提示和 Debug.Assert。