在你的電腦上重現發生 Bug 那一刻! 使用 IntelliTrace 找到發生錯誤的程式碼

各位夥伴們,

開發人員最頭痛就是除錯的時候,有時明明在自己的開發機器上運作一切正常無誤,但當將程式碼佈署到另一個測試環境、甚至是上線環境時就會有問題,這時候該如何除錯呢? 在 Visual Studio Ultimate 可以使用 IntelliTrace 功能,它是一個智慧除錯的工具,可以記錄和追蹤程式碼的執行歷程時,發生錯誤時可以讓你追蹤到引起錯誤的那一行程式碼, 您可以更輕鬆地找到 Bug 並修正,而不需要設定很多個中斷點跳來跳去。再來當上線環境發生錯誤時,如何在你的開發環境重現這個 Bug 發生時的情境好來除錯呢? IntelliTrace 就像是飛行記錄器,讓你重現發生問題那一刻的機器環境及程式執行狀況,重現 Bug 不是問題,下次當你的朋友/同事們說:「在我的電腦明明是好的啊?」你可以回「就讓 Visual Studio Ultimate 的 IntelliTrace 來幫你吧!」

第一次接觸 IntelliTrace 朋友,可先看本篇文章 - 在我的電腦明明是好的啊? 使用 IntelliTrace 重現 Bug 好除錯!,以及第二篇文章 -

上線中系統有 Bug 怎麼辦? 使用 IntelliTrace 收集上線環境診斷資料幫你抓蟲

本文簡介在如何在 Visual Studio Ultimate 中,開啟已經從測試或上線環境 (Production) 中錄好的 Trace 檔,在開發機上重現這個 Bug,並且找到發生錯誤的那一行程式碼,大家回去請試試!

 

 

當您從 IntelliTrace (.iTrace) 記錄檔開始進行偵錯時,請移至您的應用程式執行中的特定點。 這個檔案可能會包含 IntelliTrace 在應用程式執行時所記錄的效能事件、例外狀況、執行緒、測試步驟、模組及其他系統資訊。 請確定您已符合下列條件:

開啟 IntelliTrace 記錄檔

在安裝了 Visual Studio Ultimate 的電腦上,開啟 .iTrace 檔案。

  • 在 Visual Studio 外部按兩下 .iTrace 檔案,或從 Visual Studio 內開啟該檔案。 

    -或-

  • 如果 .iTrace 檔案是附加至 Team Foundation Server 工作項目,請在工作項目中依照下列步驟執行:

    • 在 [所有連結] 下方找出 .iTrace 檔案。 開啟該檔案。

      -或-

    • 在 [重新產生步驟] 底下,選擇 [IntelliTrace] 連結。

提示: 如果您在偵錯期間關閉了 IntelliTrace 檔案,您可以輕易地重新開啟它。 移至 [偵錯] 功能表,選擇 [IntelliTrace]、[顯示記錄檔摘要]。 您也可以選取 [IntelliTrace] 視窗中的 [顯示記錄檔摘要]。 只有在使用 IntelliTrace 偵錯時,才能使用這個選項。

了解 IntelliTrace 記錄檔

.iTrace 檔案中的下列某些區段,只有在您從特定來源 (例如,從 Test Manager 或 SharePoint 應用程式) 收集資料時才會出現。

區段

包含

資料收集來源

效能違規

具有超過所設定臨界值的函式呼叫的效能事件

如果是裝載於 IIS 上的 ASP.NET Web 應用程式,則來源為 Microsoft Monitoring Agent (獨立執行或搭配 System Center 2012 R2 Operations Manager 運作)

例外狀況資料

例外狀況,其中包含每個例外狀況的完整呼叫堆疊

所有來源

分析

僅適用於 SharePoint 2010 和 SharePoint 2013 應用程式。 診斷 IntelliTrace 和 SharePoint 事件,例如偵錯工具事件、ULS 事件、未處理的例外狀況,以及 Microsoft Monitoring Agent 所記錄的其他資料。

Microsoft Monitoring Agent (獨立執行或搭配 System Center 2012 R2 Operations Manager 運作)。

系統資訊

主機系統的設定和規格

所有來源

執行緒清單

在收集期間執行的執行緒

所有來源

測試資料

測試工作階段的測試步驟和結果

Test Manager

模組

目標處理序所載入的模組,以載入的順序排列顯示。

所有來源

這裡有一些秘訣可幫助您尋找每個區段中的資訊:

  • 選擇資料行標頭來排序資料。

  • 使用搜尋方塊來篩選資料。 純文字搜尋適用於所有資料行 (除了時間資料行以外)。 您也可以每個資料行使用一個篩選條件,將要篩選的搜尋範圍限定在某特定資料行。 輸入不含空格的資料行名稱、冒號 (:) 和搜尋值。 後面要接著輸入分號 (;),才能加入另一個資料行和搜尋值。

    例如,若要在 [Description] 資料行中尋找含有 "slow" 這個字的效能事件,請輸入: 

    Description:slow 

從 IntelliTrace 記錄檔開始偵錯

Dd264963.collapse_all(zh-tw,VS.120).gif效能違規

檢閱針對您的應用程式所記錄的效能事件。 您可以隱藏不常發生的事件。

若要從效能事件開始偵錯

  1. 在 [效能違規] 下,檢閱所記錄的效能事件、它們的總執行時間和其他事件資訊。 然後更深入發掘在特定的效能事件期間所呼叫的方法。
    檢視效能事件詳細資料

您也可以直接按兩下事件。

  • 在事件頁面上,檢閱這些呼叫的執行時間。 在執行樹狀目錄中尋找速度緩慢的呼叫。當您有多個呼叫 (不論是巢狀或其他形式) 時,最慢的呼叫會顯示在其專有的區段中。
  • 展開該呼叫,以檢閱該時間點所記錄的所有巢狀呼叫和參數值。(鍵盤:若要顯示或隱藏巢狀呼叫,請分別按下向右鍵或向左鍵。 若要顯示和隱藏巢狀呼叫的參數值,請按空格鍵)

從該呼叫開始偵錯。

您也可以直接按兩下該呼叫或按 Enter 鍵。如果該方法是位於您的應用程式程式碼中,Visual Studio 就會移至該方法。

現在您可以檢閱其他記錄值、呼叫堆疊、逐步執行程式碼,或使用 [IntelliTrace] 視窗在「時間」中向後或向前移動至其他方法 (這些方法是在此效能事件期間呼叫的)。

Dd264963.collapse_all(zh-tw,VS.120).gif例外狀況資料

檢閱針對您的應用程式所記錄的擲回之例外狀況。 您可以將具有相同類型和呼叫堆疊的例外狀況群組在一起,這樣就可以只看到最新的例外狀況。

若要從例外狀況開始偵錯

  • 在 [例外狀況資料] 下,檢閱記錄的例外狀況事件、其類型、訊息,以及發生例外狀況的時間。 若要更深入發掘程式碼,請從例外狀況群組中最近發生的事件開始偵錯。

您也可以直接按兩下事件。 如果事件沒有組成群組,請選取 [偵錯這個事件]。如果例外狀況是發生在您的應用程式程式碼中,Visual Studio 會移至發生例外狀況的位置。

現在您可以檢閱其他記錄值、呼叫堆疊,或使用 [IntelliTrace] 視窗在「時間」中向後或向前移動至其他記錄的事件、相關程式碼以及在這些時間點上記錄的值。

Column

顯示的內容

類型

例外狀況的 .NET 類型

如果是組成群組的例外狀況,則為 [最新的訊息];如果是沒有組成群組的例外狀況,則為 [訊息]

例外狀況所提供的訊息

如果是組成群組的例外狀況,則為 [計數]

例外狀況的擲回次數

如果是沒有組成群組的例外狀況,則為 [執行緒 ID]

擲回例外狀況的執行緒的 ID

[最新的事件時間] 或 [事件時間]

擲回例外狀況時所記錄的時間戳記

呼叫堆疊

例外狀況的呼叫堆疊。

若要查看呼叫堆疊,請選取清單中的某個例外狀況。 呼叫堆疊會顯示在例外狀況清單的下方。

 Dd264963.collapse_all(zh-tw,VS.120).gif執行緒清單

檢查所記錄的在目標處理序中執行的執行緒。 您可以從所選取之執行緒中的第一個有效 IntelliTrace 事件開始進行偵錯。

若要從特定執行緒開始偵錯

  1. 在 [執行緒清單] 底下,選擇執行緒。

  2. 在 [執行緒清單] 下方,選取 [開始偵錯]。 您也可以按兩下執行緒。 

    若要從應用程式的開頭處開始偵錯,請按兩下 [主執行緒]。 請參閱 偵錯時使用 IntelliTrace 錄製程式碼執行

使用者建立的執行緒資料,可能會比伺服器針對 IIS 裝載的 Web 應用程式所建立及管理的執行緒還要有用。

 

Column

顯示的內容

ID

執行緒 ID 編號

名稱

執行緒名稱。 未命名的執行緒會顯示為「<沒有名稱>」。

開始時間

執行緒的建立時間

結束時間

執行緒的完成時間

Dd264963.collapse_all(zh-tw,VS.120).gif相關文章

在我的電腦明明是好的啊? 使用 IntelliTrace 重現 Bug 好除錯!

上線中系統有 Bug 怎麼辦? 使用 IntelliTrace 收集上線環境診斷資料幫你抓蟲