自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Visual Studio 2010中調(diào)試.NET應用程序詳解

開發(fā) 后端
IntelliTrace到底可以幫助我們做什么?IntelliTrace會收集在調(diào)試過程中程序的運行狀態(tài),這些狀態(tài)存到哪兒,以什么樣的方式存儲呢?答案就在Advanced選項。

Visual Stuido 2010中有一個新的功能那就是IntelliTrace.IntelliTrace被引入到VisulaStudio中來加速我們對.NET應用程序的調(diào)試,它通過對預先設(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)以及檢測是否按照預先實際的邏輯進行運轉(zhuǎn),而且更多的,我們通過斷點后監(jiān)測程序狀態(tài)來發(fā)現(xiàn)問題所在。

而這樣所存在的問題是,一些邏輯上的錯誤可能發(fā)生在斷點執(zhí)行之前,而且很可能是一些無法追查。開發(fā)者必須停止當前的調(diào)試,重新設(shè)置斷點并啟動調(diào)試,而這樣的試驗過程往往需要很多次才能找到正確的位置來設(shè)置斷點。

IntelliTrace都收集哪些數(shù)據(jù)?

那么IntelliTrace帶給我們了什么?顧名思義,它智能的將一些調(diào)試信息和程序狀態(tài)自動的跟蹤并實施的展現(xiàn)給開發(fā)人員,從而減少了需要程序員找到適當?shù)臄帱c才能跟蹤和監(jiān)控程序運行狀態(tài)的過程。那么這些信息到底有什么用呢?IntelliTrace又到底搜集了哪些數(shù)據(jù)呢?這取決于我們通知IntelliTrace進行收集的數(shù)據(jù)類型和對其大小的控制,這樣IntelliTrace會按照我們期望的方式去收集部分數(shù)據(jù)而不是所有在即時調(diào)試過程中的程序狀態(tài)信息。

Visual Studio提供給我們兩個方式來控制其搜集信息的內(nèi)容源,一個是Intelli Traceeventsonly,僅僅收集智能跟蹤事件和調(diào)試中斷的相關(guān)數(shù)據(jù);另外一個是Intelli Traceeventsand call information,這個就會收集除了IntelliTrace事件之外對一個方法調(diào)用的進入和退出的各種數(shù)據(jù)。下邊我們來看看在Visual Studio 2010中如何設(shè)置IntelliTrace的跟蹤選項。

首先我們需要檢查IntelliTrace功能在Visual Stuido 2010中是打開的。在Visual Studio 2010中選擇”Tools|Options…”打開選項對話框,并選擇”IntelliTrace|General”.確保EnableIntelliTrace是被選中的。

Figure1:Visual Studio 2010 IntelliTracesettings

默認情況下,IntelliTrace僅僅收集IntelliTrace相關(guān)的事件,這樣是為了保持所收集的數(shù)據(jù)較少,并且對于性能上的影響是最小的。而當你選擇對方法調(diào)用的數(shù)據(jù)也進行搜集時,除了其臨時搜集的數(shù)據(jù)所占用空間的增大外,對于性能的影響也是較大的。盡管收集到的細節(jié)有所不同,但兩種方式都會收集一些共同的數(shù)據(jù)。比如,它總會在第一次啟動收集過程時收集系統(tǒng)信息,模塊的加載和卸載事件,線程的起始和結(jié)束時間等。隨著模塊和線程的事件,可以正確的更新模塊和線程調(diào)試窗口的信息。另外,任何模式下,在調(diào)試斷點處也會對數(shù)據(jù)進行收集,并將所收集到的基本數(shù)據(jù)類型和對象在調(diào)試其中進行檢查和審閱,并允許改變其值。

Figure2:IntelliTracein Visual Studio 2010

那么什么是IntelliTrace事件呢?簡單的說就是程序員在調(diào)試程序的過程中可能會感興趣的特定的點。例如打開一個文件,更改注冊表信息,點擊表單上的某個按鈕,甚至于數(shù)據(jù)綁定等等。IntelliTrace的事件會以競爭的方式來最終決定被放置的位置,但是這個位置不能是過于頻繁的被調(diào)用而可能導致程序性能明顯降低的地方。

當你用Visual Studio 2010打開一個項目并且啟用IntelliTrace功能時,當調(diào)試器在斷點停下時你會看到IntelliTrace的信息。下圖是我在設(shè)置了對文件的訪問作為IntelliTrace事件時IntelliTrace搜集的數(shù)據(jù):

Figure3:對IntelliTrace事件相關(guān)數(shù)據(jù)的收集

如何去更改IntelliTrace事件呢?對于默認的IntelliTraceevents,文件訪問是不被納入的。但你可以通過對IntelliTrace的設(shè)置來改變對你感興趣的事件信息的收集,來加速你的程序調(diào)試。選擇”Tools|Options…|IntelliTrace|IntelliTraceEvents”,在右邊的列表中選擇感興趣的事件即可。

Figure4:配置IntelliTrace事件

需要注意的是,添加的事件越多,IntelliTrace需要收集的數(shù)據(jù)就會越多,提供給你的信息就越多,而且數(shù)據(jù)占用的空間也會越多。這是需要權(quán)衡的,尤其是對于特別大的項目,一旦你的設(shè)置過于繁瑣,可能會讓機器處于嚴重的停滯狀態(tài)。另外,在Modules選項中,你還可以通過多模塊的過濾來達到只收集你最關(guān)心的數(shù)據(jù)程序狀態(tài)的目的,這樣避免了IntelliTrace對所有組件的相關(guān)事件都進行收集的情況。

Figure5:設(shè)置IntelliTrace跟蹤的模塊

IntelliTrace到底可以幫助我們做什么?在Advanced選項中,可以定義每次智能跟蹤的數(shù)據(jù)的存儲大小和位置。IntelliTrace會收集在調(diào)試過程中程序的運行狀態(tài),這些狀態(tài)存到哪兒,以什么樣的方式存儲呢?答案就在Advanced選項。

Figure6:IntelliTrace數(shù)據(jù)的存儲位置和大小

首先可以選擇跟蹤的數(shù)據(jù)的存儲位置,默認是存儲在C:\ProgramData\Microsoft Visual Studio\10.0\TraceDebugging位置并以每個跟蹤文件最大250M的方式存儲為.iTrace文件。位置和對于每個文件的大小都可以做調(diào)整。那么iTrace文件到底是什么呢?iTrace文件是一個可以被Visual Studio 2010所識別的文件,它記錄了本次跟蹤過程中程序執(zhí)行的時間線,線程,異常,系統(tǒng)信息和相關(guān)模塊。

Figure7:IntelliTrace文件的信息

有意思的是,這和你在IntelliTrace窗口中看到的信息是一致的,并且可以隨時映射到所對應的調(diào)試會話中。例如,在ExceptionData部分,當我們發(fā)現(xiàn)一個異常時,我們可以清楚的看到這個異常的信息以及詳細的CallStack。

Figure8:IntelliTrace對程序調(diào)試的幫助

雙擊異常,或者點擊異常下方的StartDegugging按鈕可以恢復此次跟蹤所對應的調(diào)試會話,并直接定位到異常位置。并且在右邊的IntelliTrace窗口中可以完整而清楚的看到此次程序運行過程中各種事件的相關(guān)數(shù)據(jù),以此來更清楚的還原現(xiàn)場并幫助找出問題。

Figure8:IntelliTrace幫助定位問題及還原現(xiàn)場

至此我們終于知道了IntelliTrace不僅僅只是給我們收集了數(shù)據(jù),更是為我們將這些數(shù)據(jù)與程序狀態(tài)和各個事件相關(guān)聯(lián),快速的幫助我們定位問題,以此來加速程序調(diào)試。其實在MicrosoftTestManager中也適用了IntelliTrace技術(shù)來幫助我們做相關(guān)測試,但這是后話。

當設(shè)置IntelliTrace不僅跟蹤相關(guān)的事件,并且跟蹤對每個方法的訪問時你可以清楚的看到整個程序在運行過程中是如何對不同的方法及對象進行實例化、相互調(diào)用,線程調(diào)度的時間線等等。好比描繪了一個程序的流程圖,讓你可以清楚的在各個調(diào)用間導航來找到你感興趣的信息。并且,隨著在CallView窗口中在不同的調(diào)用間導航,你可以清楚的知道每一次調(diào)用所對應的位置(除部分不可見的Code外),以此來更好的了解程序流程。

Figure9:通過CallView窗口來觀察程序中的方法調(diào)用

IntelliTrace是一個幫助我們更好的調(diào)試程序,發(fā)現(xiàn)問題并解決問題的工具,并且還可以靈活的定義對于所感興趣的事件和數(shù)據(jù)的收集,將會在開發(fā)過程中扮演越來越重要的角色。另外,你還可以自己定義IntelliTrace的事件呢。
 

Visual Studio 2010 全球發(fā)布會

 

 

【編輯推薦】

  1. Visual Studio 2010 Ultimate中MSF過程模型設(shè)計
  2. Visual Studio 2010代碼編譯器特性分析
  3. Visual Studio 2010無智能提示感知方法解析
  4. 詳解Visual Studio 2010五大新特性
  5. 細數(shù)Visual Stuido 2010中VC++的新特征
責任編輯:王曉東 來源: 博客園
相關(guān)推薦

2010-11-19 12:40:12

Visual Stud云應用程序

2011-01-12 11:56:36

Visual Stud

2010-01-15 09:30:22

Visual Stud

2011-01-24 07:24:48

Visual Stud

2010-01-14 14:12:14

Visual Stud

2009-12-01 19:28:55

Visual Stud

2010-02-05 09:06:17

Visual Stud

2009-08-24 09:25:18

Visual C# ..NET應用程序

2009-09-04 09:39:15

Visual Stud

2010-01-06 09:41:55

Visual Stud

2009-12-16 15:39:37

Visual Stud

2010-03-19 16:43:37

Visual Stud

2009-11-24 09:00:02

Visual Stud

2013-05-29 14:54:49

Visual Stud

2009-04-23 14:05:28

Visual Stud歷史調(diào)試功能

2009-07-23 13:26:21

2009-11-18 09:14:49

Visual Stud

2010-02-23 09:02:00

Visual Stud

2010-01-22 09:51:31

Visual Stud

2010-12-16 10:00:20

QtVisual Stud
點贊
收藏

51CTO技術(shù)棧公眾號