麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .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>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美激情第一区 | 日本一区二区久久久 | 久久不射电影 | 狠狠干伊人网 | 欧美一级欧美 | 一级精品 | 视频www| 精品视频 久久久 | 91精品国产乱码久久久久久久久 | 亚洲一级片在线观看 | 亚洲无马在线观看 | 久久国产精品二国产精品中国洋人 | 91短视频在线| 男女羞羞视频在线观看免费 | 草莓视频在线导航 | 色阁五月| 国产精品欧美久久久久一区二区 | 日日操夜夜透 | 女教师~淫辱の动漫在线 | 国产亚洲精彩视频 | 欧美特黄a | 五月天影院,久久综合, | 免费观看一级黄色片 | 免费看国产视频 | 午夜精品久久久久久中宇 | 国产精品久久久久免费视频 | 女人一级一级毛片 | av电影在线观看网站 | 国产精品伊人久久 | 欧美黄一区 | 九九热视频在线 | 日本在线看 | 欧洲黄色一级视频 | 欧美性受xxxx人人本视频 | xfplay噜噜av| 31freehdxxxx欧美| 国产福利不卡一区二区三区 | 亚洲成人福利在线 | 九草在线 | 国产高潮好爽好大受不了了 | 精品国产一区二区在线观看 |