談?wù)刅isual Studio 2010- IntelliTrace(智能跟蹤)
Visual Studio 2010 Ultimate 版本有個新功能IntelliTrace(智能跟蹤),IntelliTrace被引入到Visula Studio中來加速我們對.NET應(yīng)用程序的調(diào)試,它通過對預(yù)先設(shè)置的事件和方法在運行過程中的跟蹤并將其有效地傳遞給調(diào)試執(zhí)行者,從而快速的傳遞程序在執(zhí)行過程中的狀態(tài)和各種信息來幫助開發(fā)者更好的調(diào)試程序,快速的發(fā)現(xiàn)問題。實際上,在Visual Studio 2010之前,Microsoft Visual Stuido已經(jīng)幫助我們很好的繼承了調(diào)試工具,比如對變量的監(jiān)控,對堆棧的查看等等,并且允許設(shè)置斷點進行單步調(diào)試等。所有的這些都在很好的幫助開發(fā)者來了解程序在不同的執(zhí)行過程中的狀態(tài)以及檢測是否按照預(yù)先實際的邏輯進行運轉(zhuǎn),而且更多的,我們通過斷點后監(jiān)測程序狀態(tài)來發(fā)現(xiàn)問題所在。而這樣所存在的問題是,一些邏輯上的錯誤可能發(fā)生在斷點執(zhí)行之前,而且很可能是一些無法追查。開發(fā)者必須停止當(dāng)前的調(diào)試,重新設(shè)置斷點并啟動調(diào)試,而這樣的試驗過程往往需要很多次才能找到正確的位置來設(shè)置斷點。IntelliTrace智能的將一些調(diào)試信息和程序狀態(tài)自動的跟蹤并實施的展現(xiàn)給開發(fā)人員,從而減少了需要程序員找到適當(dāng)?shù)臄帱c才能跟蹤和監(jiān)控程序運行狀態(tài)的過程。
Visual Studio提供給我們兩個方式來控制其搜集信息的內(nèi)容源,一個是IntelliTrace events only,僅僅收集智能跟蹤事件和調(diào)試中斷的相關(guān)數(shù)據(jù);另外一個是IntelliTrace events and call information,這個就會收集除了IntelliTrace事件之外對一個方法調(diào)用的進入和退出的各種數(shù)據(jù)。下邊我們來看看在Visual Studio 2010中如何設(shè)置IntelliTrace的跟蹤選項。
進入到工具 --> 選項 --> IntelliTrace。它在默認(rèn)狀態(tài)下是啟用的,但是,僅捕捉事件,因為捕捉事件是便宜的。然而,當(dāng)你開始跟蹤所有這些調(diào)用信息時,真正的價值開始顯現(xiàn)出來了。你每一次調(diào)試的時候,IntelliTrace都將彈出來,你在動態(tài)調(diào)試的時候可以使用這個歷史性的調(diào)試工具。假如我在那里并且有一個斷點,但是,我要備份和重新設(shè)計這個斷點,我可以使用IntelliTrace完成這個任務(wù)。
使用IntelliTrace捕捉到調(diào)試進程的其他人可以把記錄以及.dlls和pdbs文件發(fā)送給你,你可以重放它們的進程。這個進程也許進入到數(shù)據(jù)庫(你沒有這個數(shù)據(jù)庫),它也許是采用你不能復(fù)制的方法設(shè)置的,它可能在你不能企及的網(wǎng)絡(luò)上,但是,你不用擔(dān)心,因為你擁有記錄以及.dlls和pdbs文件,你可以重放。
當(dāng)然,擁有源代碼會更好,因為那樣你就能夠看到這個代碼好像是在你自己的機器上調(diào)試它一樣。這對于在你的機器上運行正常,在其他人的機器不能運行的那些神秘的故障來說是非常好的。它對于多線程的情況也是非常好的,當(dāng)你經(jīng)過這個應(yīng)用程序的時候,這個軟件瑕疵就消失了,但是,在正常速度運行時,這個軟件瑕疵又出現(xiàn)了。
默認(rèn)情況下,IntelliTrace僅僅收集IntelliTrace相關(guān)的事件,這樣是為了保持所收集的數(shù)據(jù)較少,并且對于性能上的影響是最小的。而當(dāng)你選擇對方法調(diào)用的數(shù)據(jù)也進行搜集時,除了其臨時搜集的數(shù)據(jù)所占用空間的增大外,對于性能的影響也是較大的。盡管收集到的細(xì)節(jié)有所不同,但兩種方式都會收集一些共同的數(shù)據(jù)。比如,它總會在第一次啟動收集過程時收集系統(tǒng)信息,模塊的加載和卸載事件,線程的起始和結(jié)束時間等。隨著模塊和線程的事件,可以正確的更新模塊和線程調(diào)試窗口的信息。另外,任何模式下,在調(diào)試斷點處也會對數(shù)據(jù)進行收集,并將所收集到的基本數(shù)據(jù)類型和對象在調(diào)試其中進行檢查和審閱,并允許改變其值。
總的說來IntelliTrace調(diào)試程序就是為程序開發(fā)者量身定制的,通過其獨特的“歷史調(diào)試”功能,為開發(fā)者提供了一個反悔追溯過程控制功能。比如,在開發(fā)中程序在10分鐘前出現(xiàn)一個異常,怎么辦呢,如果在以前一般是通過手動調(diào)用Debug.Write語句,現(xiàn)在不必了!因為不少開發(fā)工具中的這種歷史調(diào)試功能都非常相似,在VS2010 正式版 中通過IntelliTrace,不但能使程序員看到程序的當(dāng)前狀況,也可以檢查某些情況下產(chǎn)生的事件,甚至還能隔離應(yīng)用程序歷史記錄中的故障點。所以,啟用歷史調(diào)試之后,VS2010 正式版能夠捕獲調(diào)用堆棧以及相關(guān)變量,咱們就可以“回退”至程序的保存前10分鐘或者更長時間,檢查程序發(fā)生異常、故障時的各種情況。因為,在默認(rèn)情況下程序只保存關(guān)鍵的類型,而開發(fā)人員可以選擇記錄所有的參數(shù),對象以及全局變量。所以,IntelliTrace會主動展示程序運行過程中的關(guān)鍵事件,諸如代碼異常、文件訪問、時時調(diào)試等等。
本文鏈接:http://www.95time.cn/tech/program/2010/7601.asp
出處:藍色理想
責(zé)任編輯:bluehearts
◎進入論壇網(wǎng)絡(luò)編程版塊參加討論
|