使用 IntelliTrace 錄製程式碼執行以偵錯應用程式

若要少花點時間偵錯應用程式,請在 Visual Studio Ultimate 中使用 IntelliTrace 來記錄和追蹤應用程式的執行記錄。 這可幫助您更輕鬆地尋找 Bug,而不需要設定多個中斷點,因為 IntelliTrace 可讓您:

  • 記錄應用程式中發生的特定事件。

    如果您選擇要收集,這可讓您檢查相關程式碼、發生偵錯工具事件時出現在 [區域變數] 視窗中的資料,以及函式呼叫資訊。

  • 減少重新啟動應用程式重新建立 Bug 或事件。

  • 偵錯難以重現或在 Visual Studio 之外 (例如,在生產環境或其他環境中) 發生的錯誤。

這個範例會顯示記錄事件如何協助您尋找程式碼中的 Bug:

僅適用於 IntelliTrace 事件 - 高階流程

觀看 IntelliTrace 動作:收集和分析 IntelliTrace 資料,以進行偵錯 (Channel 9 影片)

您想要怎麼做?

在 Visual Studio 中使用 IntelliTrace 偵錯我的應用程式:

  • 顯示過去事件。

  • 顯示過去事件的呼叫資訊。

  • 儲存 IntelliTrace 工作階段。

  • 控制 IntelliTrace 收集的資料。

在 Test Manager 的測試工作階段期間收集 IntelliTrace 資料

從 Visual Studio 外執行的應用程式收集 IntelliTrace 資料

從 IntelliTrace 記錄檔 (.iTrace 檔案) 開始偵錯。

常見問題集

  • 我可以使用 IntelliTrace 偵錯哪些應用程式?

  • 為什麼使用 IntelliTrace 進行偵錯?

  • IntelliTrace 會收集哪些資料?

  • IntelliTrace 是否會讓應用程式變慢?

我可以使用 IntelliTrace 偵錯哪些應用程式?

支援項目

有限支援

  • 實驗基礎的 F# 應用程式

  • 僅支援 Windows 市集應用程式的事件

不支援

  • C++、其他語言和指令碼

  • Silverlight、Xbox 或 Windows Mobile 應用程式

注意事項注意事項

如果您要偵錯已在執行中的處理序,您不能使用 IntelliTrace。您必須在處理序啟動時啟動 IntelliTrace。

為什麼使用 IntelliTrace 進行偵錯?

傳統或「即時」(Live) 偵錯僅顯示含過去事件有限資料的應用程式目前狀態。 您可能必須根據應用程式的目前狀態推斷這些事件,或者您必須透過重新執行應用程式重新建立這些事件。

IntelliTrace 透過記錄在這些時間點的特定事件和資料,擴展這個傳統偵錯經驗。 這可讓您查看在應用程式中發生的事件,而不需要重新啟動它,特別是如果您逐步執行超過 Bug 的位置。 在傳統偵錯期間,IntelliTrace 預設會開啟並以隱藏自動方式收集資料。 這可讓您輕易地切換傳統偵錯和 IntelliTrace 偵錯,查看記錄資訊。 請參閱在 Visual Studio 中使用 IntelliTrace 錄製程式碼執行以偵錯和 IntelliTrace 會收集哪些資料?

IntelliTrace 也可協助您偵錯難以重現或在 Visual Studio 之外發生的錯誤。 您可以收集 IntelliTrace 資料並將其儲存至 IntelliTrace 記錄檔 (.iTrace 檔案)。 .iTrace 檔案包含例外狀況、執行緒、Web 要求、測試資料、模組和其他系統資訊的詳細資料。 您可以在 Visual Studio Ultimate 中開啟這個檔案、選取項目,然後使用 IntelliTrace 開始偵錯。 這可讓您移至檔案中的所有事件,並查看應用程式在該時間點的特定詳細資料。

您可以從這些來源儲存 IntelliTrace 資料:

  • 在 Visual Studio Ultimate 中的 IntelliTrace 工作階段

  • 在 Microsoft Test Manager 中的測試工作階段

  • 在 Visual Studio 外部 (例如,在生產環境或其他環境中) 執行的應用程式

  • Visual Studio 2012.1:System Center 2012 Service Pack 1 (SP1) 監視的應用程式 (含 IntelliTrace 分析管理組件的 Operations Manager) 請參閱如何在 System Center 2012 中設定與 IntelliTrace 的整合

請參閱 使用 IntelliTrace 記錄檔 (.iTrace) 偵錯應用程式

下面是一些 IntelliTrace 如何協助您偵錯的範例:

  • 您的應用程式損毀資料檔案,但您不知道此事件在何處發生。

    如果沒有 IntelliTrace,您就必須逐一查看程式碼來尋找所有可能的檔案存取、將中斷點放在這些存取上,然後重新執行應用程式來找出發生問題的位置。 如果有 IntelliTrace,您可以看到所有收集的檔案存取事件,以及在每次發生事件時應用程式的特定詳細資訊。

  • 發生例外狀況。

    如果沒有 IntelliTrace,您會收到有關例外狀況的訊息,但沒有造成例外狀況的事件的太多資訊。 雖然您可以檢查呼叫堆疊來查看導致例外狀況的呼叫鏈結,但是卻看不到在這些呼叫期間所發生的事件順序。 如果有 IntelliTrace,您可以檢查例外狀況之前發生的事件。

  • 應用程式在測試電腦上當機,但在開發電腦上卻執行得很順利。

    您可以從 Microsoft Test Manager 收集 IntelliTrace 資料,將資料儲存至 .iTrace 檔案,然後將這個檔案附加至 Team Foundation Server 工作項目供日後調查。 請參閱包含難以重現的 Bug 的診斷追蹤資料使用 IntelliTrace 記錄檔 (.iTrace) 偵錯應用程式

  • 在 Visual Studio 外執行的應用程式時發生 Bug 或當機。

    對於 Windows Azure 架構的應用程式,您可以在發行應用程式之前先設定 IntelliTrace 資料收集。 在應用程式執行的同時,IntelliTrace 將資料儲存到 .iTrace 檔案。 請參閱使用 IntelliTrace 和 Visual Studio 中偵錯已發佈的雲端服務

    對於 Managed 桌面 (.exe) 應用程式、裝載於 IIS 7.0、7.5 和 8.0 的 ASP.NET Web 應用程式,以及 SharePoint 2010 應用程式,您可以使用獨立收集器將 IntelliTrace 資料儲存至 .iTrace 檔案。

    當您想要為執行於您不希望變更系統組態之位置 (例如生產環境) 的應用程式診斷問題時,這會非常有用。 您可以安裝收集器,而不需要變更您的系統組態。 在完成收集資料時,只要刪除收集器,即可解除安裝它。 請參閱 使用獨立的收集器在 Visual Studio 外部收集 IntelliTrace 資料

IntelliTrace 會收集哪些資料?

收集事件資訊

根據預設,IntelliTrace 只記錄 IntelliTrace 事件。 這些是偵錯工具事件、例外狀況、.NET Framework 事件,以及有助於偵錯的其他系統事件。 您可以選取所要收集的 IntelliTrace 事件種類 (除了偵錯工具事件和例外狀況,永遠記錄它們)。 請參閱 在 Visual Studio 中設定用於偵錯的 IntelliTrace 集合

  • 偵錯工具事件

    IntelliTrace 永遠記錄在 Visual Studio 偵錯工具中發生的事件。 例如,啟動您的應用程式是偵錯工具事件。 其他偵錯工具事件包括停止事件,也就是導致應用程式中斷執行的事件。 例如,您的程式叫用中斷點,叫用追蹤點或執行 [步驟] 命令。

    為了協助提高效能,IntelliTrace 不會收集偵錯工具事件的每個可能值。 相反地,它會記錄這些值:

    • [區域變數] 視窗中的值。 讓 [區域變數] 視窗保持開啟來查看這些值。

    • [自動變數] 視窗中的值 (只有當 [自動變數] 視窗開啟時)。

    • 在您將滑鼠指標放置在來源視窗中的變數頂端以查看它的值時,出現的 DataTips 值。 IntelliTrace 不會收集在固定 DataTips 中的值。

  • 例外狀況

    IntelliTrace 會記錄下列例外狀況種類的例外狀況類型和訊息:

    • 擲回並攔截之例外狀況的已處理例外狀況

    • 未處理的例外狀況

  • .NET Framework 事件

    根據預設,IntelliTrace 會記錄最常見的 .NET Framework 事件。 例如:

    • 對於檔案存取事件,IntelliTrace 會收集檔案名稱。

    • 對於選取核取方塊事件,IntelliTrace 會收集核取方塊的狀態和文字。

  • Visual Studio 2012.1:SharePoint 2010 應用程式事件

    對於在 Visual Studio 外部執行的 SharePoint 2010 應用程式,您可以使用 Visual Studio 2012.1 中的獨立收集器,錄製和儲存特定 SharePoint 事件到 .iTrace 檔案。

    當您開啟 .iTrace 檔案時,您可以輸入 SharePoint 相互關聯 ID 尋找其相對應的 Web 要求、檢視記錄的事件,並從特定事件開始偵錯。 如果檔案包含未處理的例外狀況,您可以選擇相互關聯 ID,開始偵錯例外狀況。 您可以記錄使用者設定檔事件和統一登入系統 (ULS) 事件的子集。

    請參閱:

收集函式呼叫資訊

您可以設定讓 IntelliTrace 收集函式呼叫資訊。 這個資訊可讓您查看呼叫堆疊記錄,並讓您在程式碼的呼叫中向前和向後逐步執行。 對於每個函式呼叫,IntelliTrace 會記錄這項資料:

  • 函式名稱

  • 在函式進入點做為參數傳遞且在函式結束點傳回的基本資料型別值

  • 讀取或變更時自動屬性的值

  • 對第一層子物件的指標,但不含是否為 null 以外的值

注意事項注意事項

IntelliTrace 只會收集陣列中的前 256 個物件以及字串的前 256 個字元。

請參閱 在 Visual Studio 中設定用於偵錯的 IntelliTrace 集合

收集模組資訊

若要控制 IntelliTrace 收集多少呼叫資訊,請僅指定您關心的模組。 這有助於改善應用程式在收集期間的效能。 請參閱 在 Visual Studio 中設定用於偵錯的 IntelliTrace 集合

IntelliTrace 是否會讓應用程式變慢?

根據預設,IntelliTrace 只會針對選取的 IntelliTrace 事件收集資料。 根據程式碼的結構和組織,這不一定會讓您的應用程式變慢。 例如,如果 IntelliTrace 時常記錄某個事件,這可能會讓應用程式變慢,但也可能會提示您考慮重構應用程式。

收集呼叫資訊可能會使應用程式大幅減慢。 這也可能增加任何要儲存至磁碟之 IntelliTrace 記錄檔 (.iTrace 檔案) 的大小。 若要將影響降至最低,只針對您關注的那些模組收集呼叫資訊。 若要變更 .iTrace 檔案大小上限,請移至 [工具]、[選項]、[IntelliTrace]、[進階]。 請參閱 在 Visual Studio 中設定用於偵錯的 IntelliTrace 集合

哪裡可以取得詳細資訊?

在 Visual Studio 中使用 IntelliTrace 錄製程式碼執行以偵錯

在 Visual Studio 中設定用於偵錯的 IntelliTrace 集合

包含難以重現的 Bug 的診斷追蹤資料

使用獨立的收集器在 Visual Studio 外部收集 IntelliTrace 資料

使用 IntelliTrace 記錄檔 (.iTrace) 偵錯應用程式

Dd264915.collapse_all(zh-tw,VS.110).gif網誌

Visual Studio ALM + Team Foundation Server

Dd264915.collapse_all(zh-tw,VS.110).gif論壇

Visual Studio Debugger

Dd264915.collapse_all(zh-tw,VS.110).gif指引

使用 Visual Studio 2012 測試連續傳遞 – 第 6 章:測試工具方塊

Dd264915.collapse_all(zh-tw,VS.110).gif視訊

Channel 9:收集和分析 IntelliTrace 資料