C#運用Trace語句
C#語言還是比較常見的東西,這里我們主要介紹C#運用Trace語句,包括介紹運用debug和Trace輸出等方面。
運用debug和Trace輸出
打印診斷消息可以幫你確定你的程序是怎么出錯的。你需要知道當觸發(fā)一個Assert時,發(fā)生了什么情況;你也通常需要知道在這之前發(fā)生了什么。知道這些的***的方式就是運用你的代碼,這樣你就可以很容易地看到在出現(xiàn)bug前,調用了什么函數。
在生成調試輸出時,.net Framework有一些新的功能可以用。System.Diagnostic.Debug類可以讓你格式化調試輸出,并能很容易地創(chuàng)建不同的類或級別的調試輸出。下面是我喜歡用的一些指導方針。
首先,在你的程序中為每個類建一個traceswitch對象:
- public class MyClass
- {
- private static TraceSwitch
- myClassSwitch = new TraceSwitch
- ("MyClassSwitch", "Controls the \
- debug output of MyClass");
然后,用WriteIf() 和 WriteLineIf() 方法來記錄任何你覺得有助于你跟蹤你的程序的信息:
- public bool ProcessIterations (int
- numIters)
- {
- WriteLineIf
- (myClassSwitch.TraceInfo,
- "Entering ProcessIterations",
- "CallTrace");
- ImOK ();
- Debug.Assert (numIters > 0,
- "ProcessIterations.",
- "Iterations must be more than 0");
我更喜歡用WriteLineIf(),它可以打印出錯誤消息以及錯誤種類。***個參數包含一個用于調試開關的值,可以讓你控制打印什么級別的輸出。
System.Diagnostics.Trace 的運用同Debug的用法完全一樣。不同的地方是,Debug只編譯到Debug版本中,而C#運用Trace語句編譯到Debug和Release版本中。因此,C#運用Trace語句應更謹慎。將Trace語句用到可以在編程實戰(zhàn)中幫你發(fā)現(xiàn)bugs或捕獲使用特征的代碼中。
為什么用這種方法? 運用這些方法可以讓你知道代碼執(zhí)行的順序。這有助于你確定在程序出錯前有何動作(actions)。
【編輯推薦】