国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

Dot Net的調試 - 2

2024-07-21 02:24:43
字體:
來源:轉載
供稿:網友
fail方法不能阻止應用程序運行,他們僅僅輸出錯誤信息。write和writeline方法寫入一個消息。他們不同之處僅僅在于后者輸出執行后再輸出一行。最后,flush方法刷新緩存。flush方法對跟蹤信息輸出的設備有作用(例如,流)。你可以使用自動刷新—每個信息后都自動刷新偵聽者。可以在配置文件里面配置:

<configuration>

<stream.diagnostics>

<trace autoflush = “false” />

</stream.diagnostics>

</configuration>



正如你看到的,如果你創建自己的傾聽者,需要至少實現write(string)和writeline(string)方法(這些方法是抽象方法)。

微軟提供三種跟蹤偵聽者:defaulttracelistener,eventlogtracelistener和textwritetracelister.。第一個偵聽者有缺省的方法(如果應用程序在命令行的環境下運行,那么輸出信息到控制臺。如果應用程序在調試情況下,輸出到窗口)。第二個偵聽者輸出信息到指定事件日志中(基于nt技術—winnt,2k,xp或者.net)。第三個傾聽者輸出文本到流中。

活動傾聽者列表可以在編程中設置或者在配置文件中。缺省包括defaulttracelistener.

編程改變活動傾聽者列表,要管理傾聽者集合(通過添加和刪除方法)。配置文件中管理傾聽者,你要用下邊的語法:

<configuration>

<system.diagnostics>

<trace autoflust=”false” indentsize = 4>

<listeners>

<add name=”mylistener” type=”system.dianostics.textwritertracelistener, system”

initializedata = “c:/mylistener.log”/>

<remove type = “system.diagnostics.defaulttracelistener,system”/>

</listeners>

</trace>

</system.dianostics>

</configuration>

initializedat參數是傳遞到構造器的的字符串參數(指定eventlogtracelistener偵聽者事件日志)。

偵聽者很熟悉創建應用程序使用偵聽者輸出跟蹤信息。代碼很簡單:

//trace listeners demo

//

//purpose:to demonstrate how to use listeners

using system;

using system.diagnostics;



namespace assertion

{

class application

{

[stathread]

static void main(string[] args)

{

trace.writeline(“calling writeline method”, “trace listeners demo”);

trace.flush();

}

}

}



這些代碼還不夠,我們必須創建一個配置文件來設置偵聽者:

<configuration>

<system.diagnostics>

<trace autoflush="false" indentsize="4">

<listeners>

<remove type="system.diagnostics.defaulttracelistener"/>

<add name="mylistener" type="system.diagnostics.textwritertracelistener"

initializedata="mylistener.log" />

<add name="mylistenereventlog" type="system.diagnostics.eventlogtracelistener"

initializedata="application" />

</listeners>

</trace>

</system.diagnostics>

</configuration>

這個配置文件刪除了缺省偵聽者加入兩個自定義偵聽者:第一個輸出信息到文本文件,第二個輸出到事件日志中。對于第一個偵聽者initializedata屬性指定輸出數據的文件,第二偵聽者記錄事件到事件日志。

運行程序。檢查第一個偵聽者,可以看到mylistener.log文件,它包含以下信息:tracing listeners demo:calling writeline method



第一個偵聽者把信息寫入文本文件中。察看第二個。打開微軟控制臺在事件視圖中瀏覽應用程序事件日志(這個就是我們在配置文件中指定的)。在這里可以看到我們應用程序的事件信息。更多的可能,在這個列表最上邊。如果你雙擊,可以看到其中的內容。我們發現如下信息:


是輸出信息更加容易閱讀:



有時候應用程序很復雜,為了容易理解可以格式化跟蹤信息。使輸出信息更加漂亮,可以使用縮排,看下面的簡單代碼:

public void callee()

{

trace.wrteline(“callee started”);

……//some internal logic

trace.writeline(“initializing buffer”);

……//some extra internal login

trace.writeline(“exiting callee”);

}



public void caller()

{

trace.write(“caller called”);

…..//some external logic

callee();

…..//some extral logic

trace.writeline(“initializing buffer”);

trace.write(“exiting caller”);

}

輸出信息如下:

caller called

callee stared

initializing buffer

exiting callee

initializing buffer

exiting caller



如果方法執行前后沒有顯示信息,我們將被這些拷貝的初始化緩存信息所迷惑。除了信息顯示不清楚。為了避免不明確,我們使用trace類支持的縮進功能。修改的代碼,使用縮進:

public void callee()

{

trace.indent();

trace.writeline(“callee started”);

…..//some internal logic

trace.writeline(“initializing buffer”);

….//some extra internal logic

trace.writeline(“exiting callee”);

trace.unindent();

}



public void caller()

{

trace.write(“caller called”);

….//some external logic

callee();

….//some extra login

trace.writeline(“initiallizing buffer”);

trace.write(“exiting caller”);

}

輸出信息如下:



caller called

callee started

initializing buffer

exiting callee

initializing buffer

exiting caller

正如你看到的,callee方法輸出縮進,很容易分開不同方法的信息。可以調用indent和unident方法,達到分離信息的目的。

在配置文件中修改跟蹤配置:

<configuration>

<system.diagnostics>

<trace indentsize = “3” / >

</system.diagnostics>

</configuration>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 民丰县| 涪陵区| 鄄城县| 罗定市| 伊金霍洛旗| 丽江市| 巴彦淖尔市| 宣武区| 灯塔市| 北京市| 昭苏县| 亚东县| 易门县| 临沧市| 永康市| 洮南市| 文安县| 元阳县| 霸州市| 鹿邑县| 铁力市| 通城县| 阿鲁科尔沁旗| 岢岚县| 晋江市| 金平| 乐至县| 鄯善县| 西青区| 和田市| 西林县| 全州县| 浦县| 乌兰察布市| 电白县| 长治市| 乌恰县| 银川市| 库尔勒市| 诸暨市| 平南县|