C#運(yùn)用Trace語(yǔ)句
C#語(yǔ)言還是比較常見的東西,這里我們主要介紹C#運(yùn)用Trace語(yǔ)句,包括介紹運(yùn)用debug和Trace輸出等方面。
運(yùn)用debug和Trace輸出
打印診斷消息可以幫你確定你的程序是怎么出錯(cuò)的。你需要知道當(dāng)觸發(fā)一個(gè)Assert時(shí),發(fā)生了什么情況;你也通常需要知道在這之前發(fā)生了什么。知道這些的***的方式就是運(yùn)用你的代碼,這樣你就可以很容易地看到在出現(xiàn)bug前,調(diào)用了什么函數(shù)。
在生成調(diào)試輸出時(shí),.net Framework有一些新的功能可以用。System.Diagnostic.Debug類可以讓你格式化調(diào)試輸出,并能很容易地創(chuàng)建不同的類或級(jí)別的調(diào)試輸出。下面是我喜歡用的一些指導(dǎo)方針。
首先,在你的程序中為每個(gè)類建一個(gè)traceswitch對(duì)象:
- 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(),它可以打印出錯(cuò)誤消息以及錯(cuò)誤種類。***個(gè)參數(shù)包含一個(gè)用于調(diào)試開關(guān)的值,可以讓你控制打印什么級(jí)別的輸出。
System.Diagnostics.Trace 的運(yùn)用同Debug的用法完全一樣。不同的地方是,Debug只編譯到Debug版本中,而C#運(yùn)用Trace語(yǔ)句編譯到Debug和Release版本中。因此,C#運(yùn)用Trace語(yǔ)句應(yīng)更謹(jǐn)慎。將Trace語(yǔ)句用到可以在編程實(shí)戰(zhàn)中幫你發(fā)現(xiàn)bugs或捕獲使用特征的代碼中。
為什么用這種方法? 運(yùn)用這些方法可以讓你知道代碼執(zhí)行的順序。這有助于你確定在程序出錯(cuò)前有何動(dòng)作(actions)。
【編輯推薦】