[VS2010 Online]解析Historical debug in Visual Studio 2010 - IntelliTrace
在 Visual Studio 2010 Ultimate 版本中,提供一個對於 debug 來講非常便利的功能 - IntelliTrace。
這個功能就像飛機上的黑盒子,把運行過程從頭到尾都記錄起來,所以很清楚的可以了解整個程式的操作流程。
我們先來看 IntelliTrace 的設定:
1.
首先,可以從[Tools]->[Options],可以看到有一個頁籤是 IntelliTrace :
在頁籤的 General 選項中可以設定是否要啟用 IntelliTrace 以及收集的 Event 資訊是否需要詳細的資訊。
2.
在 Advanced 選項中,可以設定紀錄放置位置、最大存放容量以及是否要顯示 navigation gutter。
什麼是 navigation gutter ?
當在運行程式時,可以透過 navigation gutter 做上下呼叫的切換。
詳細的項目可以參考 MSDN Library 上的圖示:
3.
在 IntelliTrace Events 設定要抓取的 Event:
4.
也可以抓特定 module 產生的資訊,這些設定都會被放在目錄
C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\TraceDebugger Tools\en 下的
CollectionPlan.xml 檔案中。
實際上,如何操作 IntelliTrace,我們來看看:
首先我在 Windows Form 上放置一個按鈕,並且設定按鈕的 Click 事件:
當你按下 F5 執行程式後,就會看到 IntelliTrace Exploerer,這裡可以看到
Break All 項目,以及可以針對選項設定(就是先前介紹的設定)。
按下 Break All 後,你會發現切換到了 IntelliTrace Events View。
當按下 Debugger 前的 Icon,會發現 Event 被展開,然後對應到程式碼中的某段程式碼:
這裡提供三種 Views 可供使用者查看- Calls View、Locals 以及 Call Stack。
1.) Calls View:
當你按下 Calls View 連結(也可以透過上方的 Switch to Calls View 連結切換)時,就會看到如下的畫面:
WindowsFormsApplication3.Program.Main()是目前呼叫到的方法。
Function Entry: WindowsFormsApplication3.Program.Main 是目前方法呼叫的進度。
在執行過程中,按下 F10,則執行的 Calls View 會對應到程式碼中現在的執行位置。
2.) Locals View:
這會列出參數或變數的數值。
3.) Call stack View:
列出整個 Call stack 歷程。
接下來筆者按下按鈕,觸發 Exception。
你會發現 IntelliTrace Events View 很清楚的記載了整個操作過程。
也可以在上方搜尋列輸入關鍵字來找到您要處理的問題。
挑選特定種類的事件:
挑選某個 Thread 查看。
我們用 TPL 來玩看看:
多個 Worker Thread 在執行,我們也可以觀察個別的處理歷程。
你還記得剛剛我們有設定了一個儲存 IntelliTrace 紀錄的位置?
目錄中儲存了如下的*.tdlog檔案:
隨便找一個檔案開啟(會以 Visual Studio 2010 開啟):
哇,這看起來就是一個非常清楚的報表(IntelliTrace Summary),以時間序列來表示整個操作過程:
可以在上面看到 Threads Lists、Exceptions、Test Data、System info 以及使用到的 Modules。
打開 Threads 列表,當你在某個 Thread 上用滑鼠左鍵雙擊(或是點選圖片上的 Thread ):
就會連結整個剛剛我們看到的歷程:(這功能實在太讚了)
隨文Tips: 在 Visual Studio 中,你可以用下列方式建立一個 MyClassForTran 的類別物件,ex: 但是如果你要再建立一個 MyClass 的類別: 你會發現輸入 MyClass,然後按下 Space 鍵,IntelliSense 竟然會自動塞入 MyClassForTran。 這要怎麼處理? 可以透過切換 Consume First Mode 做處理。 您可以同時按下 Ctrl + Alt + Space 按鍵來切換到 Consume First Mode。
透過這樣方式,IntelliSense 就不會自動再幫你塞字了。
(再次按下 Ctrl + Alt + Space 按鍵可以切換回原來的模式)。
試煉大會,我們下次見~~
如果您有微軟技術開發的問題,可以到MSDN Forum發問。
如果您有微軟IT管理的問題,可以到TechNet Forum發問喔。