成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Visual Studio 2010中調試.NET應用程序詳解

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

Visual Stuido 2010中有一個新的功能那就是IntelliTrace.IntelliTrace被引入到VisulaStudio中來加速我們對.NET應用程序的調試,它通過對預先設置的事件和方法在運行過程中的跟蹤并將其有效地傳遞給調試執行者,從而快速的傳遞程序在執行過程中的狀態和各種信息來幫助開發者更好的調試程序,快速的發現問題。

實際上,在Visual Studio 2010之前,Microsoft Visual Stuido已經幫助我們很好的繼承了調試工具,比如對變量的監控,對堆棧的查看等等,并且允許設置斷點進行單步調試等。所有的這些都在很好的幫助開發者來了解程序在不同的執行過程中的狀態以及檢測是否按照預先實際的邏輯進行運轉,而且更多的,我們通過斷點后監測程序狀態來發現問題所在。

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

IntelliTrace都收集哪些數據?

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

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

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

Figure1:Visual Studio 2010 IntelliTracesettings

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

Figure2:IntelliTracein Visual Studio 2010

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

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

Figure3:對IntelliTrace事件相關數據的收集

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

Figure4:配置IntelliTrace事件

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

Figure5:設置IntelliTrace跟蹤的模塊

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

Figure6:IntelliTrace數據的存儲位置和大小

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

Figure7:IntelliTrace文件的信息

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

Figure8:IntelliTrace對程序調試的幫助

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

Figure8:IntelliTrace幫助定位問題及還原現場

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

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

Figure9:通過CallView窗口來觀察程序中的方法調用

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

Visual Studio 2010 全球發布會

 

 

【編輯推薦】

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

2011-01-12 11:56:36

Visual Stud

2010-11-19 12:40:12

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

2010-02-05 09:06:17

Visual Stud

2009-12-01 19:28:55

Visual Stud

2009-08-24 09:25:18

Visual C# ..NET應用程序

2009-12-16 15:39:37

Visual Stud

2009-09-04 09:39:15

Visual Stud

2010-01-06 09:41:55

Visual Stud

2010-03-19 16:43:37

Visual Stud

2009-11-24 09:00:02

Visual Stud

2009-04-23 14:05:28

Visual Stud歷史調試功能

2013-05-29 14:54:49

Visual Stud

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技術棧公眾號

主站蜘蛛池模板: 日韩视频一区二区 | 黄在线免费观看 | 国产精品1 | 国产精品不卡视频 | 亚洲精品免费视频 | 91九色视频| 亚洲高清网 | 日韩一区二区在线视频 | 91精品欧美久久久久久久 | 一区二区三区四区免费观看 | 91精品国产91久久久久游泳池 | 欧美一区二区三区在线播放 | 性色在线 | 欧美四虎 | 国产乱码精品一区二区三区忘忧草 | 国产超碰人人爽人人做人人爱 | 精品视频一区二区三区 | 黄色国产在线视频 | 美女视频网站久久 | 在线看av网址 | 51ⅴ精品国产91久久久久久 | av在线播放网址 | 91porn国产成人福利 | 久久免费视频网 | 宅女噜噜66国产精品观看免费 | 三级视频久久 | 成人精品一区二区三区中文字幕 | 日韩伦理电影免费在线观看 | 亚洲啊v| 人妖无码| 久久精品亚洲国产 | av超碰| 国产三级精品三级在线观看四季网 | 农夫在线精品视频免费观看 | 大陆一级毛片免费视频观看 | 亚洲精品久久久久久下一站 | 亚洲最大的黄色网址 | 国产精品女人久久久 | 国产精品久久久久久久久久免费看 | 国产黄色在线观看 | 日韩av在线一区二区 |