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

若要在 Visual Studio Ultimate 中使用 IntelliTrace 來記錄和追蹤程式碼或應用程式的執行記錄,只要照常開始偵錯即可。 根據預設,IntelliTrace 會開啟並自動記錄特定事件和資料,讓您可以更輕鬆地查看應用程式發生哪些狀況。 請參閱 使用 IntelliTrace 錄製程式碼執行以偵錯應用程式

若要確認 IntelliTrace 已開啟:

在 Visual Studio 中啟用或停用 IntelliTrace

注意事項注意事項

清除 [啟用 IntelliTrace] 會關閉所有自訂 IntelliTrace 設定。這些設定會套用至所有專案與方案。它們會在偵錯工作階段與 Visual Studio 工作階段之間保存。

您想要怎麼做?

  • 只使用事件偵錯

  • 選取 IntelliTrace 記錄的事件

  • 使用事件和呼叫資訊偵錯

  • 控制 IntelliTrace 記錄多少呼叫資訊

  • 儲存 IntelliTrace 工作階段

只使用事件偵錯

您可以嘗試只使用「IntelliTrace 事件」(IntelliTrace Event) 偵錯,查看單獨這個選項是否有助於發現 Bug。 IntelliTrace 事件是偵錯工具事件、例外狀況、.NET Framework 事件,以及其他系統事件。 您可以開啟或關閉特定事件,控制 IntelliTrace 記錄的事件,但請在開始偵錯之前這麼做。

以下是只使用 IntelliTrace 事件偵錯的視覺化概觀:

僅適用於 IntelliTrace 事件 - 重新產生 Bug

僅適用於 IntelliTrace 事件 - 事件詳細資料和程式碼

僅適用於 IntelliTrace 事件 - 找到 Bug

回到頁首

以下是只使用 IntelliTrace 事件偵錯的詳細步驟:

  1. 照常開始偵錯。 重現 Bug。

    提示

    保持 [區域變數] 和 [自動變數] 視窗開啟,以便查看和記錄這些視窗中顯示的值。若要開始偵錯,按 F5 或選擇 [偵錯] 功能表中的 [開始偵錯]。如果當您開始偵錯時沒有看到 [IntelliTrace] 視窗,IntelliTrace 就可能未開啟或視窗可能關閉。若要開啟 [IntelliTrace] 視窗,移至 [偵錯]、[IntelliTrace]、[IntelliTrace 事件]。

  2. 手動中斷應用程式的執行。

    提示

    在 [偵錯] 功能表或 [IntelliTrace] 視窗中,選取 [全部中斷]。

    現在,在 IntelliTrace 視窗中您會看到依時間先後順序的事件清單,最上方是當偵錯工具中斷執行時的第一個事件,最後一個事件則在最下方。

    顯示診斷事件的 [IntelliTrace] 視窗

  3. 尋找最接近您重現 Bug 位置的事件,在這種情況下是在您的應用程式中斷執行之前。

  4. 選取事件,展開其詳細資料。

    • 如果原始程式碼可用,Visual Studio 會將指標移至對應來源視窗中的程式碼,因此您可以檢查它。

    • 若要查看當事件發生時記錄的 IntelliTrace 資料,請選取 [相關檢視] 連結,查看對應的偵錯工具視窗。

    • 如果是檔案存取事件,請選擇路徑名稱連結來開啟該檔案。 如果完整路徑名稱無法使用,可透過出現的搜尋方塊來尋找檔案。

  5. 如果沒有發現 Bug,請嘗試檢查導致 Bug 的其他事件。 您也可以讓 IntelliTrace 記錄呼叫資訊,因此您可以逐步執行函式呼叫。

回到頁首

選取 IntelliTrace 記錄的事件

您可以開啟或關閉記錄特定的 IntelliTrace 事件 (除了偵錯工具事件和例外狀況,IntelliTrace 永遠記錄它們)。

  1. 如果您正在偵錯,請停止偵錯。 否則,請在選取事件之後重新啟動偵錯。

  2. 移至 [工具]、[選項]、[IntelliTrace]、[IntelliTrace 事件]。 選取 IntelliTrace 要記錄的事件和事件分類。

    設定 IntelliTrace 事件集合

回到頁首

使用事件和呼叫資訊偵錯

如果您必須檢查應用程式的函式呼叫順序以尋找 Bug,IntelliTrace 可以將函式呼叫與事件一起記錄。 這可讓您查看呼叫堆疊記錄、在程式碼的呼叫中向前和向後逐步執行,以及檢視 IntelliTrace 記錄的資料,例如函式名稱、其進入點和結束點,以及某些參數值和傳回值。 請參閱 使用 IntelliTrace 錄製程式碼執行以偵錯應用程式

  1. 如果您正在偵錯,請停止偵錯。 否則,請在開啟呼叫收集之後重新啟動偵錯。

  2. 開啟呼叫收集。

    設定 IntelliTrace 的呼叫集合

    提示

    這可能會讓應用程式變慢,並增加儲存到磁碟的所有 IntelliTrace 記錄檔 (.iTrace 檔案) 的大小。若要取得大部分呼叫資料,但將影響降至最低,只從您感興趣的那些模組記錄資料。若要變更 .iTrace 檔案大小上限,請移至 [工具]、[選項]、[IntelliTrace]、[進階]。

  3. 照常開始偵錯。 重現 Bug。

    提示

    保留 [區域變數] 和 [自動變數] 視窗,檢視和記錄這些視窗中所顯示的值。若要開始偵錯,按 F5 或選擇 [偵錯] 功能表中的 [開始偵錯]。如果當您開始偵錯時沒有看到 [IntelliTrace] 視窗,IntelliTrace 就可能未開啟或視窗可能關閉。若要開啟 [IntelliTrace] 視窗,移至 [偵錯]、[IntelliTrace]、[IntelliTrace 事件]。

  4. 手動中斷應用程式的執行。

    提示

    在 [偵錯] 功能表或 [IntelliTrace] 視窗中,選取 [全部中斷]。

  5. 尋找最接近您重現 Bug 位置的事件。 請參閱只使用事件偵錯。

  6. 選取事件,展開其詳細資料。 選取 [相關檢視] 旁邊的 [呼叫檢視]。

    顯示診斷事件的 [IntelliTrace] 視窗

    現在您可以看到應用程式的呼叫堆疊記錄,最上方是應用程式的根呼叫,最下方則是相對於所選擇之事件的目前呼叫 (而不是如即時的目前)。

    IntelliTrace 視窗呼叫檢視

    在目前呼叫下方縮排的另一個清單中,顯示目前呼叫對其他函式所進行的呼叫。 此縮排的清單也會顯示目前呼叫的 IntelliTrace 事件。

    注意事項注意事項

    因為 IntelliTrace 沒有從對應的模組記錄資料,所以呼叫會呈現暗灰色。若要看到此資料,讓 IntelliTrace 從這些模組收集資料。

  7. 尋找在所選取事件後面的呼叫。 按兩下此呼叫,因此您可以逐步執行它。

    在 [呼叫檢視] 視窗中,您逐步執行的呼叫現在是在呼叫堆疊下方新的目前呼叫。 縮排的清單現在會顯示這個新的目前呼叫的呼叫和事件。 來源視窗和偵錯工具視窗也會為這個新的目前呼叫更新。

    提示

    如果您想要查看呼叫位置,按一下 [呼叫檢視] 視窗中的呼叫,不要按兩下。這會將指標移至呼叫位置,但是不會逐步執行呼叫,因此您仍然是在目前呼叫。

  8. 若要逐步執行呼叫和事件,請在呼叫資訊可用時使用沿著來源視窗中出現的巡覽邊。 如果您沒有看到巡覽邊,請移至 [工具]、[選項]、[IntelliTrace]、[進階]。 選擇 [在偵錯模式中顯示巡覽邊]。

    在此設定偵錯工具內容

    將偵錯內容設定為它所在的呼叫時間範圍。

    這個圖示只會出現在目前呼叫堆疊的每個框架上。

    返回呼叫位置

    將游標和偵錯內容的時間向後移至目前函式被呼叫的位置。

    如果您正在傳統偵錯模式中,這個命令就會讓您開始使用 IntelliTrace 偵錯。

    移至上一個呼叫或 IntelliTrace 事件

    將游標和偵錯內容的時間向後移至上一個呼叫或事件。

    如果您正在傳統偵錯模式中,這個命令就會讓您開始使用 IntelliTrace 偵錯。

    逐步執行

    將指標和偵錯內容的時間向前移至目前選取的函式。

    只有當您正在使用 IntelliTrace 偵錯時,才能使用這個命令。

    移至下一個呼叫或 IntelliTrace 事件

    將指標和偵錯內容的時間向前移至存在 IntelliTrace 資料的下一個呼叫或事件。

    只有當您正在使用 IntelliTrace 偵錯時,才能使用這個命令。

    移至即時模式

    回到您使用 IntelliTrace 開始偵錯的傳統偵錯。

  9. 若要尋找呼叫的特定執行個體,請在 IntelliTrace 記錄中搜尋該呼叫已記錄的執行個體:

    1. 從進行呼叫的一行程式碼:

      在 IntelliTrace 偵錯時尋找呼叫執行個體

      注意事項注意事項

      如果該行為方法結束,將不會取得正確結果。

      -或-

      從被呼叫函式的主體內:

      1. 確定包含函式的專案檔已在 Visual Studio 中開啟。

      2. 開啟函式主體內部的捷徑功能表。 選取 [在 IntelliTrace 中搜尋這個方法]。

    2. 瀏覽結果,尋找您感興趣的執行個體。 選取這個執行個體,同步處理 [呼叫檢視] 視窗和檢查已針對該執行個體記錄的資料。

回到頁首

控制 IntelliTrace 記錄多少呼叫資訊

您可以讓 IntelliTrace 只記錄您感興趣之模組的呼叫資訊。 這也有助於改善應用程式的效能。

若要加入多個模組,請在字串開頭或結尾使用萬用字元 *。 模組名稱必須使用檔案名稱,而非組件名稱。 不接受檔案路徑。

設定 IntelliTrace 的模組集合

注意事項注意事項

排除模組仍然可能導致從您不感興趣的模組收集資料,例如協力廠商或開放原始碼模組。

回到頁首

儲存 IntelliTrace 工作階段

若要在稍後繼續執行工作階段,請儲存工作階段做為 IntelliTrace 記錄檔 (.iTrace 檔案)。

手動儲存工作階段

在 Visual Studio 中手動儲存 IntelliTrace

自動儲存工作階段

自動儲存 IntelliTrace 工作階段

提示

為了節省磁碟空間,當您不再需要它們時請關閉儲存 .iTrace 檔案。所有現有 .iTrace 檔案都會保留下來。

Visual Studio 將預設 .iTrace 檔案大小限制為 250 MB,因為 IntelliTrace 可以收集許多資料。當檔案達到這個限制時,Visual Studio 會刪除最早的項目,讓出空間給較新項目。若要儲存比預設限制更多的資料,請變更檔案的最大記錄大小。

自動儲存工作階段時,以及 Visual Studio 裝載處理序 (vshost.exe) 開啟時,Visual Studio 會針對每個 IntelliTrace 工作階段建立兩個 .iTrace 檔案。Visual Studio 會為應用程式建立一個 .iTrace 檔案,並為裝載處理序建立一個 .iTrace 檔案。這個流程會改善偵錯效能、啟用特定的偵錯功能,且預設為開啟。

.iTrace 檔案包含哪些資料?

.iTrace 檔案包含例外狀況、執行緒、Web 要求、測試資料、模組和其他系統資訊的詳細資料。 當您在 Visual Studio Ultimate 中開啟檔案、選取項目,並開始偵錯時,您可以移至檔案中的所有事件,檢查相關的程式碼和有關應用程式當時記錄的資料。 請參閱 使用儲存的 IntelliTrace 資料偵錯應用程式

若要偵錯發生在 Microsoft Test Manager 執行測試期間,但在開發環境中難以重現的錯誤或當機,請嘗試設定 Test Manager 收集 IntelliTrace 資料。 您可以將這項資料儲存至 .iTrace 檔案和附加至 Team Foundation Server 工作項目,做進一步調查。 請參閱 分析失敗的測試和追蹤 Bug

若要偵錯發生在您不想要變更系統組態之位置 (例如生產環境) 的錯誤或當機,請嘗試使用獨立收集器,將 IntelliTrace 資料儲存至 .iTrace 檔案。 請參閱 使用 IntelliTrace 獨立收集器收集生產環境中的診斷資料

回到頁首

哪裡可以取得詳細資訊?

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

使用 IntelliTrace 獨立收集器收集生產環境中的診斷資料

使用儲存的 IntelliTrace 資料偵錯應用程式

網誌

Visual Studio ALM + Team Foundation Server

論壇

Visual Studio 偵錯工具

指引

使用 Visual Studio 2012 測試持續傳遞 – 第 6 章:測試工具箱 (英文)

視訊

Channel 9 影片:收集和分析生產環境中的資料