亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

Dot Net的調試 - 2

2024-07-21 02:24:43
字體:
來源:轉載
供稿:網友
fail方法不能阻止應用程序運行,他們僅僅輸出錯誤信息。write和writeline方法寫入一個消息。他們不同之處僅僅在于后者輸出執行后再輸出一行。最后,flush方法刷新緩存。flush方法對跟蹤信息輸出的設備有作用(例如,流)。你可以使用自動刷新—每個信息后都自動刷新偵聽者??梢栽谂渲梦募锩媾渲茫?br>
<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>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩亚洲精品一区二区三区| 国产日韩欧美在线视频观看| 日本伊人精品一区二区三区介绍| 国产精品亚洲欧美导航| 国产成+人+综合+亚洲欧洲| 亚洲在线一区二区| 久久久精品999| 最新69国产成人精品视频免费| 国产不卡一区二区在线播放| 91亚洲国产成人久久精品网站| 成人免费在线视频网站| 欧美日韩亚洲视频一区| 亚洲综合中文字幕在线| 久久久精品久久久| 国产亚洲一级高清| 欧美性xxxx极品hd欧美风情| 日韩亚洲欧美中文高清在线| 午夜精品一区二区三区视频免费看| 午夜免费在线观看精品视频| 日本sm极度另类视频| 国产成人精品一区| 国产99久久精品一区二区 夜夜躁日日躁| 57pao成人国产永久免费| 欧美xxxx18国产| 国产精品ⅴa在线观看h| 国产成人综合精品| 亚洲欧美国产视频| 久久成人av网站| 国产精品尤物福利片在线观看| 国产免费观看久久黄| 久久久久久久久久久久久久久久久久av| 韩国精品久久久999| 成人免费淫片视频软件| 欧美日韩国产在线看| 国产精品视频自在线| 亚洲品质视频自拍网| 亚洲一区二区在线播放| 亚洲成人av片| 欧美成人精品一区二区| 亚洲区bt下载| 欧美精品成人在线| 黑人狂躁日本妞一区二区三区| 国产日产欧美精品| 午夜精品美女自拍福到在线| 亚洲图片欧美日产| 亚洲91精品在线| 久久99热精品这里久久精品| 亚洲午夜未删减在线观看| 日韩欧美国产中文字幕| 久久久久久美女| 欧美精品第一页在线播放| 日本成人免费在线| 国内外成人免费激情在线视频| 国产成人综合精品在线| 久久综合五月天| 日韩美女写真福利在线观看| 欧美自拍大量在线观看| 久久欧美在线电影| 欧美激情在线一区| 91精品国产91久久久久久最新| 欧美人与性动交a欧美精品| 久久人人爽人人爽人人片av高清| 亚洲精美色品网站| 成人久久精品视频| 国产精品日韩在线观看| 精品国偷自产在线视频99| 日韩亚洲欧美成人| 欧美成人午夜激情视频| 亚洲男人天堂手机在线| 亚洲欧洲在线播放| 欧美激情国产高清| 亚洲国产精品网站| 这里只有精品视频在线| 91热福利电影| 国产精品第二页| x99av成人免费| 欧美电影在线观看| 综合久久五月天| 欧美一区二区三区免费视| 亚洲999一在线观看www| 日韩中文字幕在线看| 91麻豆国产精品| 亚洲欧美日本另类| 奇门遁甲1982国语版免费观看高清| 国产香蕉97碰碰久久人人| 97视频在线观看成人| 91亚洲国产成人久久精品网站| 96国产粉嫩美女| 亚洲午夜久久久久久久| 亲爱的老师9免费观看全集电视剧| 国产精品露脸av在线| 亲子乱一区二区三区电影| 久久夜色精品国产亚洲aⅴ| 欧美高跟鞋交xxxxhd| 蜜月aⅴ免费一区二区三区| 久久久久久久久久久久久久久久久久av| 欧美性videos高清精品| 中文字幕日韩在线播放| 在线亚洲欧美视频| 日韩av日韩在线观看| 亚洲精品91美女久久久久久久| 97在线免费观看视频| 亚洲一区二区三区成人在线视频精品| 日本精品在线视频| 欧美三级欧美成人高清www| 国产精品一区二区三区在线播放| 日韩在线欧美在线国产在线| 亚洲热线99精品视频| 91色p视频在线| 久久久久久久久久久久av| 日韩av片电影专区| 欧美另类xxx| 国产999视频| 一区二区国产精品视频| 91精品国产免费久久久久久| 国产精品jizz在线观看麻豆| 亚洲欧美制服另类日韩| 91精品在线播放| 亚洲最新在线视频| 国产91ⅴ在线精品免费观看| 日韩精品中文字幕视频在线| 国产精品偷伦一区二区| 久久精品99久久久久久久久| 亚洲欧洲日韩国产| 久久网福利资源网站| 国产精品久久97| 亚洲网站在线看| 2019亚洲男人天堂| 成人网中文字幕| 国产视频福利一区| 91国在线精品国内播放| 亚洲色图综合网| 精品国产美女在线| 91在线无精精品一区二区| 日韩视频在线免费观看| 国产成人拍精品视频午夜网站| 91在线观看免费网站| 亚洲国产第一页| 欧洲美女免费图片一区| 欧美第一淫aaasss性| 国产精品成人一区二区| 亚洲精品日韩在线| 久久精品美女视频网站| 成人福利在线观看| 91国内揄拍国内精品对白| 日韩欧美一区二区在线| 91色视频在线观看| 国产精品午夜一区二区欲梦| 国产成人一区二区在线| 亚洲欧美日韩精品久久| 黑人欧美xxxx| 久久99国产精品久久久久久久久| 国产精品爽黄69| 国产91在线播放九色快色| 久久久久久久久久av| 宅男66日本亚洲欧美视频| 国产欧美精品一区二区三区-老狼| 亚洲欧美在线免费观看| 日韩中文在线中文网三级| 欧美性猛交xxxx偷拍洗澡| 日韩中文字幕精品视频| 91在线精品播放| 成人有码视频在线播放| 高清欧美性猛交xxxx黑人猛交|