C Trace類與Debug類條件編譯的使用

2022-04-07 01:37:19 字數 2285 閱讀 3179

一.首先要明白debug與trace的區別:

1. debug.write和trace.write有什麼不同?何時應該使用哪乙個?

debug類提供一組幫助除錯**的方法和屬性。trace類提供一組幫助跟蹤**執行的方法和屬性,通俗的說就是為在不打斷程式的除錯或跟蹤下,用來記錄程式執行的過程。

debug只在debug狀態下會輸出,trace在release下也會輸出,在release下debug的內容會消失。

2. debug build和release build的區別,是否會有明顯的速度變化?請說明理由。

首先以乙個**說明問題:

專案debug

release

條件編譯常數

debug;trace

trace

優化**

false

true

輸出路徑

bin\debug

bin\release

生成除錯資訊

true

false

debug模式下生成的程式集為除錯版本,未經優化;在bin\debug\目錄中有兩個檔案,除了要生成的.exe或.dll檔案外,還有個.pdb檔案,這個.pdb檔案中就記錄了**中的斷點等除錯資訊;release模式下不包含除錯資訊,並對**進行了優化,\bin\release\目錄下只有乙個.exe或.dll檔案。在專案資料夾下除了bin外,還有個obj目錄。編譯是分模組編譯的,每個模組的編譯結果就儲存在了obj目錄下。最後會合併為乙個exe或者dll檔案儲存到bin之中。因為每次編譯都是增量編譯,也就是只重新編譯改變了的模組,所以這個obj的目錄的作用就是儲存這些小塊的編譯結果,加快編譯速度。

二.trace and bug sample

using system;

using system.diagnostics; //引入debug類所在命名空間

namespace traceanddebug

class testdebug

public static void testdebugmethod()

debug.listeners.add(new textwritertracelistener(console.out));

//將debug類輸出定向到控制台輸出

debug.autoflush = true;

//設定debug為自動輸出,即每次寫入後都呼叫listeners上呼叫flush

debug.indent();

//設定縮排

debug.writeline("debug writeline()");

//用debug輸出"debug writeline()"

console.writeline("console.writeline()");

//用console輸出"console.writeline()"

debug.unindent();

//取消縮排

textwritertracelistener(console.out));

//將trace類輸出定向到控制台輸出

= true;

//設定trace為自動輸出,即每次寫入後都呼叫listeners上呼叫flush

trace.indent();

//設定縮排

trace.writeline("trace writeline()");

//用trace輸出"trace writeline()"

console.writeline("console.writeline()");

//用console輸出"console.writeline()"

trace.unindent();

//取消縮排

console.read();

class program

static void main(string args)

testdebug.testdebugmethod();

三.  c#將trace,debug資訊輸出到控制項上**)

主要實現方法,繼承tracelinster類,重寫構造引數,重寫write和writeline方法就可以了,具體**如下:

public class controltracelistener : tracelistener

public override void write(string message)

);}

public override void writeline(string message));}

private void sendstring(string msg)

}

C Trace類與Debug類條件編譯的使用

一.首先要明白debug與trace的區別 1.debug.write 和trace.write 有什麼不同?何時應該使用哪乙個?debug 類提供一組幫助除錯 的方法和屬性。trace 類提供一組幫助跟蹤 執行的方法和屬性,通俗的說就是為在不打斷程式的除錯或跟蹤下,用來記錄程式執行的過程。debu...

類值類與類指標類

類值類 行為像值的 class a a const a a ps new string a.ps i a.i 每個類物件有自己的乙份資源拷貝 a operator const a rhs a private string ps int i 一種優化拷貝賦值運算子的方法 copy and swap c...

類與類關係

表現為繼承或實現關係 is a 具體形式為類與類之間的繼承關係,介面與介面之間的繼承關係,類對介面的實現關係。指的是乙個類 稱為子類 子介面 繼承另外的乙個類 稱為父類 父介面 的功能,並可以增加它自己的新功能的能力,uml中實現用三角形箭頭和實線表示 指的乙個類實現介面 可以是多個 的功能,uml...