[VS2010 Online]解析Historical debug in Visual Studio 2010 - IntelliTrace

[VS2010 Online]解析Historical debug in Visual Studio 2010 - IntelliTrace

image_thumb3

 

在 Visual Studio 2010 Ultimate 版本中,提供一個對於 debug 來講非常便利的功能 - IntelliTrace

 

這個功能就像飛機上的黑盒子,把運行過程從頭到尾都記錄起來,所以很清楚的可以了解整個程式的操作流程。

 

 

 

我們先來看 IntelliTrace 的設定:

1.

首先,可以從[Tools]->[Options],可以看到有一個頁籤是 IntelliTrace

在頁籤的 General 選項中可以設定是否要啟用 IntelliTrace 以及收集的 Event 資訊是否需要詳細的資訊。

image

 

2.

在 Advanced 選項中,可以設定紀錄放置位置、最大存放容量以及是否要顯示 navigation gutter。

image

 


什麼是 navigation gutter ?

當在運行程式時,可以透過 navigation gutter 做上下呼叫的切換。

image 

 

 

 

 

詳細的項目可以參考 MSDN Library 上的圖示:

image

 

 

3.

在 IntelliTrace Events 設定要抓取的 Event:

image

 

 

4.

也可以抓特定 module 產生的資訊,這些設定都會被放在目錄

C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\TraceDebugger Tools\en 下的

CollectionPlan.xml 檔案中。

image 

 

 

 

 

 

 

實際上,如何操作 IntelliTrace,我們來看看:

 

首先我在 Windows Form 上放置一個按鈕,並且設定按鈕的 Click 事件:

image 

 

 

當你按下 F5 執行程式後,就會看到 IntelliTrace Exploerer,這裡可以看到

Break All 項目,以及可以針對選項設定(就是先前介紹的設定)。

image 

 

 

 

按下 Break All 後,你會發現切換到了 IntelliTrace Events View
image 

 

 

當按下 Debugger 前的 Icon,會發現 Event 被展開,然後對應到程式碼中的某段程式碼:

image 

 

 

 

這裡提供三種 Views 可供使用者查看- Calls ViewLocals 以及 Call Stack

1.) Calls View:

當你按下 Calls View 連結(也可以透過上方的 Switch to Calls View 連結切換)時,就會看到如下的畫面:

image 

 

 

WindowsFormsApplication3.Program.Main()是目前呼叫到的方法。

Function Entry: WindowsFormsApplication3.Program.Main 是目前方法呼叫的進度

 

 

在執行過程中,按下 F10,則執行的 Calls View 會對應到程式碼中現在的執行位置。

image 

 

 

 

2.) Locals View:

這會列出參數或變數的數值。

image 

 

 

 

3.) Call stack View:

列出整個 Call stack 歷程。

image 

 

 

 

接下來筆者按下按鈕,觸發 Exception。

 

你會發現 IntelliTrace Events View 很清楚的記載了整個操作過程。

image 

 

 

也可以在上方搜尋列輸入關鍵字來找到您要處理的問題。

image 

 

 

挑選特定種類的事件:

image 

 

 

挑選某個 Thread 查看。

image 

 

 

 

我們用 TPL 來玩看看:

image 

 

 

 

多個 Worker Thread 在執行,我們也可以觀察個別的處理歷程。

image 

 

 

 

 

你還記得剛剛我們有設定了一個儲存 IntelliTrace 紀錄的位置?

目錄中儲存了如下的*.tdlog檔案:

image 

 

 

 

隨便找一個檔案開啟(會以 Visual Studio 2010 開啟):

 

 

哇,這看起來就是一個非常清楚的報表(IntelliTrace Summary),以時間序列來表示整個操作過程:

可以在上面看到 Threads Lists、Exceptions、Test Data、System info 以及使用到的 Modules。

image

 

 

 

打開 Threads 列表,當你在某個 Thread 上用滑鼠左鍵雙擊(或是點選圖片上的 Thread ):
image 

 

 

就會連結整個剛剛我們看到的歷程:(這功能實在太讚了)

image


 

 

隨文Tips:

在 Visual Studio 中,你可以用下列方式建立一個 MyClassForTran 的類別物件,ex:

image

 

但是如果你要再建立一個 MyClass 的類別:

image

 

你會發現輸入 MyClass,然後按下 Space 鍵,IntelliSense 竟然會自動塞入 MyClassForTran。

image

 

這要怎麼處理? 可以透過切換 Consume First Mode 做處理。

您可以同時按下 Ctrl + Alt + Space 按鍵來切換到 Consume First Mode。

image

 

透過這樣方式,IntelliSense 就不會自動再幫你塞字了。

(再次按下 Ctrl + Alt + Space 按鍵可以切換回原來的模式)。

 

 

 

 

 

 

 

試煉大會,我們下次見~~

 

 

 

 

 

 

如果您有微軟技術開發的問題,可以到MSDN Forum發問。

如果您有微軟IT管理的問題,可以到TechNet Forum發問喔。