服務追蹤檢視器工具 (SvcTraceViewer.exe)

Windows Communication Foundation (WCF) 服務追蹤檢視器工具可協助您分析由 WCF 所產生的診斷追蹤。 服務追蹤檢視器提供一種輕鬆合併、檢視和篩選記錄內追蹤訊息的方式,方便您診斷、修復以及驗證 WCF 服務的問題。

設定追蹤

診斷追蹤可提供您資訊,顯示整個應用程式的作業期間所發生之事件。 顧名思義,您可以從作業的來源開始追蹤,一直追蹤到作業的目的端,也可以透過中繼點追蹤。

您可以使用應用程式的組態檔來設定追蹤,例如,Web 裝載應用程式的 Web.config,或自我裝載應用程式的 Appname.config。 以下是一個範例:

<system.diagnostics>
    <trace autoflush="true" />
    <sources>
            <source name="System.ServiceModel"
                    switchValue="Information, ActivityTracing"
                    propagateActivity="true">
            <listeners>
               <add name="sdt"
                   type="System.Diagnostics.XmlWriterTraceListener"
                   initializeData= "SdrConfigExample.e2e" />
            </listeners>
         </source>
    </sources>
</system.diagnostics>

在這個範例中,指定了追蹤接聽項的名稱與型別。 接聽項命名為 sdt,而標準 .NET Framework 追蹤接聽項 (System.Diagnostics.XmlWriterTraceListener) 會當成型別加入。 initializeData 屬性用來將該接聽項的記錄檔名稱設定為 SdrConfigExample.e2e。 對於記錄檔,您可以使用完整路徑來取代簡單檔名。

範例會在根目錄中建立名為 SdrConfigExample.e2e 的檔案。 如<開啟和檢視 WCF 追蹤檔案>一節所述,使用追蹤檢視器開啟檔案時,您會看到已設定的所有訊息。

追蹤層級是由 switchValue 設定所控制。 下表描述可使用的追蹤層級。

追蹤層級 描述
重大 - 記錄 Fail-Fast 和事件記錄檔項目,並追蹤相互關聯資訊。 以下為一些會使用到「嚴重」層級的範例:
- 您的 AppDomain 因為未處理的例外狀況而停擺。
- 您的應用程式無法啟動。
- 造成失敗的訊息來自 MyApp.exe 處理序。
錯誤 - 記錄所有例外狀況。 您可以在下列情況使用「錯誤」層級:
- 您的程式碼因為「無效的轉換例外狀況」而毀損。
- 「無法建立端點」例外狀況造成您的應用程式在啟動時失敗。
警告 - 可能因此造成後來的錯誤或嚴重失敗的狀況。 您可以在下列情況使用這個層級:
- 應用程式收到的要求超過其節流設定所允許的數量。
- 按收佇列已達到其設定容量的 98%。
資訊 - 會產生對監控與診斷系統狀態、衡量效能,或描述分析有幫助的訊息。 您可以使用此類資訊來進行容量規劃與效能管理。 您可以在下列情況使用這個層級:
- 在訊息到達 AppDomain 並還原序列化之後發生失敗。
- 建立 HTTP 繫結的時候發生失敗。
詳細資訊 - 使用者程式碼和服務的偵錯層級追蹤。 設定這個層級的時機:
- 您不確定發生失敗時呼叫了程式碼中的哪一個方法。
- 您設定不正確的端點,且服務因為保留存放區中的項目鎖定而無法啟動。
ActivityTracing 介於處理活動與元件之間的流程事件。

這個層級可以讓系統管理員與開發人員相互關聯相同應用程式定義域中的多個應用程式。

- 活動界限的追蹤:開始/停止。
- 傳輸追蹤。

您可以使用 add 來指定要使用的追蹤接聽項名稱與型別。 在範例組態中,接聽項命名為 sdt,而標準 .NET Framework 追蹤接聽項 (System.Diagnostics.XmlWriterTraceListener) 會當成型別加入。 請使用 initializeData 來設定該接聽項的記錄檔名稱。 此外,您可以使用完整路徑來取代簡單檔名。

從 .NET Framework 4.8 開始,某些高對比主題中的 ComboBox 控制項會以正確的色彩顯示。 您可以從 svcTraceViewer.exe.config 檔案中移除下列設定,以停用這項變更:

<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false" />

使用服務追蹤檢視器工具

開啟和檢視 WCF 追蹤檔案

服務追蹤檢視器支援三種檔案類型:

  • WCF 追蹤檔 (.svcLog)

  • 事件追蹤檔 (.etl)

  • Crimson 追蹤檔

服務追蹤檢視器可讓您開啟所有支援的追蹤檔、新增並整合其他追蹤檔,或者同時開啟與合併一組追蹤檔。

若要開啟追蹤檔案
  1. 使用命令視窗巡覽至您的 WCF 安裝位置 (C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin),然後輸入 SvcTraceViewer.exe,啟動服務追蹤檢視器。

注意

服務追蹤檢視器工具可以和兩種檔案類型產生關聯:.svclog 與 .stvproj。 您可以在命令列中使用兩個參數來註冊與取消註冊檔案的副檔名。

/register:註冊 ".svclog" 和 ".stvproj" 副檔名與 SvcTraceViewer.exe 之間的關聯。

/unregister:移除註冊 ".svclog" 與 ".stvproj" 副檔名與 SvcTraceViewer.exe 之間的關聯。

  1. 在服務追蹤檢視器啟動之後,按一下 [檔案],然後指向 [開啟]。 巡覽至您的追蹤檔案存放的位置。

  2. 按兩下您要開啟的追蹤檔案。

    注意

    按下 SHIFT 鍵並同時按一下多個追蹤檔案,以便同時選取並開啟多個檔案。 服務追蹤檢視器會將所有檔案的內容合併為單一檢視。 例如,您可以同時開啟用戶端與服務的追蹤檔案。 當您在組態中啟用了訊息記錄與活動傳播時,這將會很有用。 這樣一來,您就可以檢查用戶端與服務之間的訊息交換。 您也可以將多個檔案拖曳到檢視器中,或是使用 [專案] 索引標籤。如需詳細資訊,請參閱<管理專案>一節。

  3. 若要將其他追蹤檔案新增至已開啟的集合,請按一下 [檔案],然後指向 [新增]。 在開啟的視窗中,巡覽至追蹤檔的位置並按兩下您要新增的檔案。

警告

不建議您載入大於 200MB 的追蹤記錄檔。 如果嘗試載入大於這項限制的檔案,載入程序可能會花費很長的時間 (視您電腦的資源而定)。 服務追蹤檢視器工具不是造成需花費這麼長時間的原因,但它可能會耗盡電腦的記憶體。 建議您設定部分載入,以避免發生這種狀況。 如需如何執行此作業的詳細資訊,請參閱「載入大型追蹤檔」一節。

事件追蹤與 Crimson 追蹤

檢視器的原生格式即為 WCF 所發出的活動追蹤格式。 以不同格式發出的追蹤資料必須先經過轉換,才能透過檢視器加以顯示。 除了活動追蹤格式之外,目前的檢視器還支援事件追蹤和 Crimson 追蹤。

當您開啟不包含活動追蹤的檔案時,檢視器會嘗試轉換檔案。 您必須指定將包含已轉換追蹤資料之檔案的名稱與位置。 一旦資料轉換完畢,檢視器就會顯示新檔案的內容。

注意

轉換時需要使用磁碟空間來儲存轉換的追蹤資料。 在開始轉換之前,請先確定您擁有足夠的磁碟空間來儲存資料。 否則,轉換會失敗。

管理專案

檢視器支援專案以協助檢視多個追蹤檔案。 例如,如果您擁有一個用戶端追蹤檔與一個服務追蹤檔,則您可以將它們新增至專案中。 之後,每次當您開啟專案時,就會同時載入專案中的所有追蹤檔。

有兩種方式管理專案:

  • 在 [檔案] 功能表中,您可以開啟、儲存與關閉專案。

  • 在 [專案] 索引標籤中,您可以將檔案新增至專案中。

檢視 WCF 追蹤

WCF 使用活動追蹤格式發出追蹤。 在活動追蹤模型中,個別追蹤會依其用途分為不同的活動群組。 邏輯控制流程會在活動之間傳輸。 例如,在應用程式的存留期內,會出現許多「訊息傳送活動」然後消失。 如需有關檢視追蹤和活動,以及服務追蹤檢視器使用者介面的詳細資訊,請參閱使用服務追蹤檢視器檢視相互關聯的追蹤並進行疑難排解

切換至不同的檢視

服務追蹤檢視器可提供不同的檢視, 這些檢視會在檢視器的左窗格中顯示為索引標籤,也可透過 [檢視] 功能表加以存取。

  • 活動檢視

  • 專案檢視

  • 訊息檢視

  • 圖形檢視

活動檢視

一旦開啟追蹤檔以後,您就可以看見許多追蹤分成不同的活動群組,並顯示在左窗格的 [活動] 檢視中。

[活動] 檢視會顯示活動名稱、活動中的追蹤數、持續時間、開始時間和結束時間。

只要按一下任何一項列出的活動,此活動的追蹤就會顯示在右側的追蹤窗格中, 然後您可以選取追蹤以檢視其詳細資料。

您可以按下 CtrlShift 鍵,並按一下所需的活動,同時選取多個活動。 追蹤窗格會顯示選取之活動的所有追蹤。

您可以按兩下活動以將其顯示在 [圖形] 檢視中。 另一種方式則是選取活動,並切換至 [圖形] 檢視。

注意

"000000000000" 活動是一種無法顯示在 [圖形] 檢視中的特殊活動。 由於其他所有活動皆連結至這個活動,所以如果顯示這個活動,將對效能產生嚴重的影響。

您可以按一下資料行標題,將活動清單排序。 包含警告追蹤的活動背景為黃色,而包含錯誤追蹤的活動背景則為紅色。

活動的類型各有不同,而每種類型都會對應至每個活動左側的某個圖示。 如需這些圖示的意義,請參閱「了解追蹤圖示」一節。

專案檢視

這個檢視可讓您管理目前專案中的追蹤檔案。 如需詳細資訊,請參閱<管理專案>一節。

訊息檢視

此檢視可讓您檢視所有訊息記錄追蹤,包括動作、日期/時間、處理序、活動及來源/目的地,並瀏覽至相關聯訊息記錄追蹤的詳細資料。 您可以依活動界限、流處理序/執行緒或傳送與接收來分組訊息記錄追蹤,以便更輕鬆地瀏覽訊息流程。

圖形檢視

此檢視會顯示圖表表單中指定活動的追蹤資料。 圖表格式可讓您看見事件以階段的方式執行,以及當資料在多個活動之間移動時,這些活動之間的關係。

若要切換至 [圖形] 檢視,請在 [活動] 檢視中選取一項活動,然後按一下 [活動] 索引標籤,或是 [訊息] 檢視中的訊息記錄追蹤。 如果載入了多個追蹤檔案,而且活動涉及來自一個檔案以上的追蹤,則圖形檢視會顯示所有相關的追蹤。 按兩下活動與訊息記錄追蹤也會帶您進入 [圖形] 檢視。

在 [圖形] 檢視中,每個垂直欄代表一項活動,而直欄中的每個區塊則代表一項追蹤。 所有活動會依處理序 (或執行緒) 分組。 活動之間的小箭頭代表傳輸, 處理序之間的大箭頭則代表訊息交換。 選取的活動一律會以黃色表示。

選取圖形中的追蹤
  1. 按一下圖形中的區塊。

  2. 使用向上與向下鍵來選取相鄰的追蹤。

  3. 觀察 [追蹤窗格] 與 [詳細資料窗格] 中的追蹤資訊。

展開或摺疊活動傳輸

當選取的活動向外傳輸至另一個活動中時,您可以展開活動傳輸, 這可讓您追蹤傳輸。

若要展開或摺疊活動傳輸,

  1. 找出傳輸圖示左側帶有加號 (+) 的傳輸追蹤。

  2. 按一下加號 (+) 或按鍵盤上的 Ctrl 與加號 (+)。

  3. 下一個活動隨即會出現在圖形中。

  4. 減號 (-) 會出現在傳輸圖示的左側。 按一下減號 (-) 或按 Ctrl 和減號 (-),活動傳輸隨即摺疊。

注意

當多個傳輸進入某個活動,而且您展開其中一個傳輸,則會顯示從根活動到新活動之間的所有活動。 這些新的活動會以摺疊形式顯示。 如果您想要查看這些活動的詳細資料,可以按一下圖形標頭的展開圖示,垂直展開這些活動。

垂直展開或摺疊活動

檢視器會藉由摺疊活動來隱藏活動圖形中不必要的詳細資料。 在摺疊的活動中,不會顯示個別的追蹤, 只會顯示傳輸追蹤。 如果您想要檢視活動中的所有追蹤,可以按一下圖形標題的活動展開符號,垂直展開活動。

若要垂直展開或摺疊活動,

  1. 按一下活動標頭中的加號 (+) 圖示,即可垂直展開活動。

  2. 請注意,圖形會顯示所有的追蹤。

  3. 按一下活動標頭中的減號 (-) 圖示,即可垂直摺疊活動。

  4. 請注意,活動中只會顯示重要的傳輸、訊息記錄、警告與例外狀況追蹤。

選項。

您可以透過 [圖形] 檢視的 [選項] 功能表,選取兩個選項。

  • 顯示活動界限追蹤:取消核取此選項時,即可忽略圖形中的活動界限追蹤。

  • 顯示非訊息詳細資訊追蹤:取消核取此選項時,即可忽略詳細資訊層級追蹤 (訊息追蹤除外)。 在大多數情況下,詳細資訊層級追蹤的分析比較不重要。 當您不想要分析詳細資訊層級追蹤,只想要專注在更重要的追蹤時,這個選項就會很有用。

配置模式

檢視器包含兩種配置模式:[處理序] 和 [執行緒]。 這個設定會定義最大的組織單元。 預設的配置模式為 [處理序],表示活動是依處理序在圖形中分組。

執行清單

您可以從這個下拉式清單選取要顯示在圖形中的處理序或執行緒。 例如,如果您有兩個用戶端 (A 與 B) 的追蹤檔,並且開啟了一個服務,但只想要在圖形中顯示服務與用戶端 A,則可以取消選取清單中的用戶端 B。

檢視追蹤詳細資料

若要檢視追蹤詳細資料,請在 [追蹤] 窗格中選取一項追蹤。 詳細資料會顯示在 [詳細資料] 窗格中。

追蹤窗格

[追蹤窗格] 位於服務追蹤檢視器的右上角, 這個窗格會列出選取之活動中的所有追蹤,並且列出追蹤層級、執行緒 ID、處理序名稱等額外的資訊。

您可以滑鼠右鍵按一下追蹤並選取 [將追蹤複製到剪貼簿],將追蹤的原始 XML 複製到剪貼簿。

詳細資料窗格

[詳細資料窗格] 位於服務追蹤檢視器的左下角, 這個窗格提供三個用來檢視追蹤詳細資料的索引標籤。

[格式化] 檢視會以較有組織的方式來顯示資訊。 這種檢閱會在表格和樹狀目錄中列出所有已知的 XML 項目,讓這些資訊更容易閱讀與了解。

[XML] 檢視會顯示與選取之追蹤相對應的 XML。 這種檢視支援反白顯示功能與語法色彩。 當您使用 [尋找] 搜尋字串時,搜尋結果會反白顯示。

[訊息] 檢視會顯示訊息記錄追蹤中的 XML 訊息部分。 當您選取非訊息追蹤時,這種檢視就不會出現。

篩選 WCF 追蹤

為了更輕鬆地分析追蹤,您可以使用下列方式來篩選:

  • 篩選器工具列可讓您存取預先定義和自訂的篩選器。 您可以透過 [檢視] 功能表來啟用這項工具。

  • 您可以使用檢視器預先定義的篩選器,針對 WCF 追蹤部分進行選擇性的篩選。 根據預設,這個篩選器會允許所有的基礎結構追蹤通過。 您可以在 [檢視] 功能表下方的 [篩選選項] 子功能表中定義這個篩選器的所有設定。

  • [自訂 XPath] 篩選器可讓使用者完整控制整個篩選過程。 您可以在 [檢視] 功能表下的 [自訂篩選] 中定義這些篩選器。

只有通過所有篩選器的追蹤資料會顯示出來。

使用篩選器工具列

篩選器工具列會出現在工具的上方。 如果看不到的話,可以在 [檢視] 功能表中加以啟動。 工具列內含三個元件:

  • 尋找:[尋找] 會定義要透過篩選作業尋找的物件。 例如,如果您想要尋找所有在處理序 X 內容所發出的追蹤,請將此欄位設為 X 並將 [搜尋範圍] 欄位設為 [處理序名稱]。 當您選取了以時間為基礎的篩選器時,這個欄位就會變更為 DateTime 選取器控制項。

  • 搜尋:這個欄位會定義要套用的篩選器型別。

  • 層級:層級設定定義了篩選器所允許的最小追蹤層級。 例如,如果層級設為 [錯誤與更高層級],則只會顯示 [錯誤] 與 [嚴重] 層級的追蹤。 這個篩選器會結合 [尋找目標] 與 [搜尋] 指定的準則。

[立即篩選] 按鈕會開始篩選作業。 有一些篩選器,特別是當它們套用到大型資料集時,會花較長的時間來完成。 您可以在狀態列中,按下 [作業] 功能表上的 [停止] 按鈕,取消篩選作業。

[清除] 按鈕會重設預先定義和自訂的篩選器,以便讓所有追蹤通過。

篩選選項:

檢視器會自訂移除檢視中的 WCF 追蹤。 它會選擇性地移除由 WCF 特定區域所發出的追蹤,例如,從檢視中移除與交易相關的追蹤。

您可以在 [檢視] 功能表下方的 [篩選選項] 子功能表中定義這個篩選器的所有設定。

自訂篩選器

如果您很熟悉 XML 路徑語言 (XPath),可以使用它來建構自訂篩選器,以便在追蹤資料中搜尋任何您感興趣的 XML 項目。 這些篩選器都可以透過篩選器工具列加以存取。

自訂篩選器可包含一些參數。 您也可以匯入預先存在的自訂篩選器。

建立自訂篩選器

您可以用兩種方式來建立篩選器:

使用範本精靈來建立自訂篩選器

您可以按一下現有的追蹤,依據追蹤結構來建立篩選器。 此範例將以執行緒 ID 為基礎建立一個自訂篩選器。

  1. 在檢視器右上方的追蹤窗格中,選取一個包含您要篩選之項目的追蹤。

  2. 按一下位於追蹤窗格上方的 [建立自訂篩選] 按鈕。

  3. 在隨即出現的對話方塊中,輸入篩選器名稱。 在此範例中,請輸入 Thread ID。 您也可以為自己的篩選器提供說明。

  4. 左側的樹狀檢閱顯示了您在步驟 1 所選取的追蹤記錄的結構。 請瀏覽至您要建立相關條件的項目。 在此範例中,請瀏覽至位於 XPath: /E2ETraceEvent/System/Execution/@ThreadID 節點中的 [ThreadID]。 按兩下樹狀檢視中的 [ThreadID] 屬性。 這樣可在對話方塊右側建立屬性的運算式。

  5. 將 [ThreadID] 條件的參數欄位從 [無] 變更為 {0}。 此步驟會在套用篩選器時,讓您設定 [ThreadID] 值 (請參閱「如何套用篩選器」一節)。您最多可以定義四個參數。 所有條件將由 OR 運算子結合在一起。

  6. 按一下 [確定] 建立篩選器。

注意

使用範本精靈建立篩選器之後,您就只能手動進行編輯。 您無法針對先前已經建立的篩選器啟動精靈。 此外,在範本精靈內建立的所有 XPath 篩選條件會透過 OR 運算子結合在一起。 如果您需要用到 AND 運算,可以在建立好篩選器之後,編輯篩選器運算式。

手動建立自訂篩選器

[自訂篩選] 功能表可讓您手動輸入 XPath 篩選條件。

  1. 在 [檢視] 功能表中,按一下 [自訂篩選] 功能表項目。

  2. 在隨即出現的對話方塊中,按一下 [新增]

  3. 請至少指定一個篩選器名稱與 XPath 運算式。

  4. 按一下 [確定]

套用自訂篩選器

建立自訂篩選器後,可透過篩選器工具列存取自訂篩選器。 在篩選器工具列的 [搜尋範圍] 欄位中,選取您要套用的篩選器。 針對先前的範例選取 [Thread ID]。

  1. 在 [尋找目標] 欄位中指定您要尋找的值。 在此範例中,輸入您要搜尋的執行緒 ID。

  2. 按一下 [立即篩選] 並觀察運算結果。

如果您的篩選器使用多個參數,則請在 [尋找目標] 欄位中輸入這些參數並使用 ';' 做為分隔符號。 例如,下列字串定義了 3 個參數:'1;findValue;text'。 檢視器會將 '1' 套用至篩選器的 {0} 參數。 'findValue' 和 'text' 分別套用至 {1} 和 {2} 。

共用自訂篩選器

您可以在不同的工作階段和不同的使用者之間共用自訂篩選器。 您可以將篩選器匯出到定義檔中,然後將此檔案匯入到其他位置。

若要匯入自訂篩選器:

  1. 在 [檢視] 功能表中,按一下 [自訂篩選器]

  2. 在隨即開啟的對話方塊中,按一下 [匯入] 按鈕。

  3. 巡覽至自訂篩選器檔案 (.stvcf),按一下檔案,再按一下 [開啟] 按鈕。

若要匯出自訂篩選器:

  1. 在 [檢視] 功能表中,按一下 [自訂篩選器]

  2. 在隨即開啟的對話方塊內,選取您要匯出的篩選器。

  3. 按一下 [匯出] 按鈕。

  4. 指定自訂篩選器定義檔 (.stvcf) 的名稱和位置,然後按一下 [儲存] 按鈕。

注意

您只能透過服務追蹤檢視器來匯入與匯出這些自訂的篩選器。 您無法使用其他工具來讀取這些篩選器。

尋找資料

檢視器提供以下尋找資料的方法:

  • [尋找] 工具列可讓您快速存取最常用的尋找選項。

  • [尋找] 對話方塊提供您更多尋找選項。 您可以透過 [編輯] 功能表,或是同時按下 Ctrl + F 鍵來加以存取。

尋找工具列會顯示在檢視器上方。 如果看不到的話,可以在 [檢視] 功能表中加以啟動。 工具列內含兩個元件:

  • 尋找目標:讓您輸入搜尋關鍵字。

  • 查詢:讓您輸入搜尋範圍。 您可以選擇是否要搜尋所有活動,或是僅限目前的活動。

[尋找] 對話方塊提供您另外兩個選項:

  • 尋找目標:

    • [未經處理記錄資料] 選項會在所有未經處理的資料中搜尋關鍵字。

    • [XML 文字] 和 [XML 屬性] 選項只能在 XML 項目中進行搜尋。

    • [已記錄的訊息] 選項只會在訊息中搜尋關鍵字。

  • 忽略根活動:此搜尋作業會忽略 "000000000000" 活動中的追蹤資料。 當根活動擁有數以千計的追蹤項目,而其中大部分為傳輸時,這個選項可以改善在大型追蹤檔案中搜尋的效能。

由於在應用程式執行階段會逐步記錄追蹤,巡覽追蹤可以幫助您針對應用程式進行偵錯。 服務追蹤檢視器提供各種巡覽追蹤的方式。

逐步前進或逐步返回

如果您將每個追蹤視為一行程式碼,逐步前進的意思就很類似 Visual Studio 整合式開發環境 (IDE) 中的「不進入函式」。 差別在於,您也可以在追蹤中逐步返回。 「逐步前進」表示移動至活動內的下一個追蹤。

  • 逐步前進:使用 [活動] 功能表,或是按下 "F10"。 您也可以使用追蹤窗格中的「向下」鍵。

  • 逐步返回:使用 [活動] 功能表,或是按下 "F9"。 您也可以使用追蹤窗格中的「向上」鍵。

注意

這會將您帶往在不同處理序中,甚至是不同電腦上發生的活動,因為 WCF 訊息可包含跨越電腦的活動識別碼。

跟隨 Transfer

傳輸追蹤是追蹤檔案中的特別追蹤。 活動可以藉由傳輸追蹤來傳輸到另一個活動。 例如,「活動 A」可以傳輸至「活動 B」。 在此情況中,「活動 A」就會包含具有「至: 活動」名稱和傳輸圖示的傳輸追蹤。 這個傳輸追蹤是這兩個追蹤的連結。 在「活動 B」中,活動結尾可能也會有一個傳輸追蹤,用來傳回「活動 A」。 這跟程式中的函式呼叫 (Function Call) 類似:A 呼叫 B,然後 B 將資料傳回 A。

「跟隨 Transfer」很類似偵錯工具中的「逐步執行」。 它能跟隨 A 到 B 的傳輸,而且不會對其他追蹤產生任何影響。

您可以透過滑鼠或鍵盤來跟隨傳輸:

  • 透過滑鼠:按兩下追蹤窗格中的傳輸追蹤。

  • 透過鍵盤:選取一個傳輸追蹤,然後使用 [活動] 功能表中的 [跟隨 Transfer],或者按下 "F11"

注意

在許多情況下,當活動 A 傳輸至活動 B 時,活動 A 會等候活動 B 傳輸回到活動 A。也就是說,當活動 B 正在進行追蹤的這段期間,活動 A 不會記錄任何追蹤。 然而,活動 A 也可能不會等候活動 B 而逕行記錄追蹤。 活動 B 也可能不會傳輸回到活動 A。因此,這裡的活動傳輸與函式呼叫還是有點不一樣。 您可以透過 [圖形] 檢視,更清楚地了解活動傳輸。

跳到下一個傳輸或跳到上一個傳輸

當您在分析目前的活動時,或在已選取多個活動時選取活動,您會希望快速找到它所傳輸到的目標活動。 「跳到下一個傳輸」可讓您找到活動中的下一個傳輸追蹤。 一旦您找到傳輸追蹤,就可以使用「跟隨 Transfer」逐步前進至下一個活動。

  • 跳到下一個傳輸:使用 [活動] 功能表,或是按下 "Ctrl + F10"。

  • 跳到上一個傳輸:使用 [活動] 功能表,或是按下 "Ctrl + F9"。

雖然在活動窗格和追蹤窗格中進行巡覽與偵錯行為很類似,但使用 [圖形] 檢視可以提供您更好的巡覽體驗。 如需詳細資訊,請參閱「圖形檢視」一節。

載入大型追蹤檔

追蹤檔大小可能非常龐大。 例如,如果您開啟 [詳細資訊] 層級的追蹤功能,執行幾分鐘後所得出的追蹤檔很容易就大到好幾百個百萬位元組大小,甚至更大,而這得視網路速度與通訊模式而定。

當您在服務追蹤檢視器中開啟一個非常大的追蹤檔時,可能會對系統效能帶來負面影響。 載入速度與載入之後的回應時間可能非常緩慢。 實際的速度不一定,取決於您的硬體組態而定。 在大部分電腦上,載入大於 200M 的追蹤檔就會對效能有非常大的影響。 如果追蹤檔大小超過 1G,這項工具可能會耗盡所有可用的記憶體,或是停止回應很長一段時間。

為了避免在分析大型追蹤檔時發生緩慢的載入與回應時間情況,服務追蹤檢視器提供一項稱為「部分載入」的功能,讓您一次僅載入追蹤檔案的一小部分。 例如,您的追蹤檔案大小超過 1GB,可以在伺服器上執行好幾天。 當發生一些錯誤而您想要分析追蹤檔案時,不需要開啟整個追蹤檔。 反之,您可以在錯誤可能發生的特定期間載入追蹤。 因為範圍縮小,服務追蹤檢視器工具可以更快地載入檔案,讓您使用較小的資料集來找出錯誤。

啟用部分載入

您不需要手動啟用部分載入。 如果您嘗試載入的追蹤檔案大小總計超過 40MB,服務追蹤檢視器會自動顯示 [部分載入] 對話方塊,讓您選取要載入的部分。

注意

由於追蹤可能不會平均分散在時間範圍內,您在 [部分載入] 工具列中指定的期間長短與顯示的載入大小可能不成比例。 實際的載入大小可能比 [部分載入] 對話方塊中的 [預估大小] 還要小。

調整部分載入

在您部分載入追蹤檔之後,可能會想要變更正在載入的資料集。 您可以透過調整檢視器上方的 [部分載入] 工具列來達到這個目的。

  1. 使用滑鼠來移動工具列,或是輸入 [開始時間] 與 [結束時間]。

  2. 按一下 [調整] 按鈕。

了解追蹤圖示

以下列出服務追蹤檢視器工具使用的圖示,用於在 [活動] 檢視、[圖形] 檢視和 [追蹤] 窗格中表示不同的項目。

注意

有些未分類的追蹤 (例如「訊息已關閉」) 沒有圖示。

活動追蹤

Icon 描述
Warning trace 警告追蹤:在警告層級發出的追蹤。
Error trace 錯誤追蹤:在錯誤層級發出的追蹤。
Activity Start trace: 活動開始追蹤:標記活動開始的追蹤, 其中包含了活動的名稱。 身為應用程式設計師或開發人員,您應對每個處理序或執行緒的每個活動識別碼定義一個活動「開始」追蹤。

如果活動識別碼的傳播因為追蹤相互關聯而跨越追蹤,您會看到同一個活動識別碼有多個「開始」(每個追蹤來源一個)。 如果追蹤來源的 ActivityTracing 已啟用,便會發出「開始」追蹤。
Activity Stop trace 活動停止追蹤:標記活動停止的追蹤, . 其中包含了活動的名稱。 身為應用程式設計師或開發人員,您應對每個追蹤來源的每個活動定義一個活動「停止」追蹤。 在指定的追蹤來源發出活動「停止」後,不會出現該追蹤來源的追蹤,除非追蹤時間精細度不夠小。 發生這種情況時,時間相同的兩個追蹤 (包括「停止」) 可能會在顯示時交錯。 如果活動識別碼的傳播因為追蹤相互關聯而跨越追蹤,您會看到同一個活動識別碼有多個「停止」(每個追蹤來源一個)。 如果追蹤來源的 ActivityTracing 已啟用,便會發出「停止」追蹤。
Activity Suspend trace 活動暫止追蹤:標記活動暫停時間的追蹤。 在活動繼續執行之前,暫止活動中不會發出追蹤。 暫止活動代表追蹤來源範圍內的該活動中沒有發生處理。 暫止/繼續追蹤對於分析很有用。 如果追蹤來源的 ActivityTracing 已啟用,便會發出「暫止」追蹤。
Activity resume trace 活動繼續追蹤:標記活動在暫止後恢復繼續之時間的追蹤。 該活動中會再次發出追蹤。 暫止/繼續追蹤對於分析很有用。 如果追蹤來源的 ActivityTracing 已啟用,便會發出「繼續」追蹤。
Transfer 傳輸:當邏輯控制流程從一個活動傳輸至另一個活動時發出的追蹤。 傳輸起源的活動會繼續執行工作,與傳輸移至的活動平行。 如果追蹤來源的 ActivityTracing 已啟用,便會發出「傳輸」追蹤。
Transfer From 傳輸來源:可定義從另一個活動傳輸至目前活動的追蹤。
Transfer To 傳輸目標:可定義從目前活動傳輸至另一個活動之邏輯控制流程的追蹤。

WCF 追蹤

Icon 描述
Message Log trace 訊息記錄追蹤:當 System.ServiceModel.MessageLogging 追蹤來源已啟用時,某個 WCF 訊息由訊息記錄功能記錄時所發出的追蹤。 按一下此追蹤會顯示訊息。 訊息有四個可設定記錄點:ServiceLevelSendRequest、TransportSend、TransportReceive 和 ServiceLevelReceiveRequest,也可以由訊息記錄追蹤中的 messageSource 屬性來指定。
Message Received trace 已接收訊息追蹤:如果已在「資訊」層級或「詳細資訊」層級啟用 System.ServiceModel 追蹤來源而收到 WCF 訊息時,便會發出此追蹤。 必須有這個追蹤,才能在活動的 [圖形] 檢視中檢視訊息相互關聯箭頭。
Message Sent trace 已傳送訊息追蹤:如果已在「資訊」層級或「詳細資訊」層級啟用 System.ServiceModel 追蹤來源而傳送 WCF 訊息時,便會發出此追蹤。 必須有這個追蹤,才能在活動的 [圖形] 檢視中檢視訊息相互關聯箭頭。

活動

Icon 描述
Activity 活動:表示目前活動為一般活動。
Root activity 根活動:表示處理序的根活動。

WCF 活動

Icon 描述
Environment activity 環境活動:可建立、開啟或關閉 WCF 主機或用戶端的活動。 在這些階段內發生的錯誤會出現在這個活動中。
Listen activity 接聽活動:記錄與接聽項相關之追蹤的活動。 在這個活動內,我們可以檢視接聽項資訊和連線要求。
Receive Bytes activity 接收位元組活動:這個活動會將所有關於在兩端點間連線上接收傳入位元組的追蹤組成群組。 必須有這個活動,才能與傳播活動識別碼的傳輸活動建立相互關聯。 包括連線中止在內的連線錯誤會出現在這個活動中。
Process Message activity 處理訊息活動:這個活動會將有關建立 WCF 訊息的追蹤組成群組。 由於信封不良或格式錯誤的訊息而發生的錯誤會出現在這個活動中。 在這個活動內,我們可以檢查訊息標頭,了解是否已從呼叫端傳播出活動識別碼。 如果已傳播活動識別碼,當傳輸至處理動作活動 (請參閱下一個圖示) 時,也可以將傳播的活動識別碼指派給該活動,讓呼叫端和被呼叫端追蹤之間能產生相互關聯。
Message Log trace 處理動作活動:這個活動會將所有關於跨越兩個端點之 WCF 要求的追蹤組成群組。 如果組態中兩個端點上的 propagateActivity 都設為 true,則來自這兩個端點的所有追蹤會合併為一個活動,以便直接相互關聯。 由於傳輸或安全性處理在擴及使用者程式碼界限後返回 (如果回應存在的話) 所造成的錯誤,會包含在這個活動中。
Process Message activity 執行使用者程式碼活動:將處理要求的使用者程式碼追蹤組成群組的活動。

疑難排解

如果您沒有寫入登錄的權限,在使用 "svctraceviewer /register" 命令註冊工具時,會收到錯誤訊息「Microsoft 服務追蹤檢視器未向系統登錄」。 如果發生這種狀況,您應使用具有登錄寫入權限的帳戶登入。

此外,服務追蹤檢視器工具會將一些設定 (例如,自訂篩選器和篩選選項) 寫入至其組件資料夾的 SvcTraceViewer.exe.settings 檔中。 如果您沒有此檔案的讀取權限,您仍可以啟動該工具,但無法載入設定。

如果您在開啟 .etl 檔案時收到錯誤訊息「處理一或多個追蹤時發生未知的錯誤」,則表示 .etl 檔案的格式無效。

如果您開啟的是使用阿拉伯文作業系統建立的追蹤記錄,可能會發現時間篩選器無法運作。 例如,2005 年對應到阿拉伯曆的 1427 年。 但是,服務追蹤檢視器工具篩選器所支援的時間範圍並不支援 1752 年之前的日期。 這就表示您無法在該篩選器中選取正確的日期。 若要解決這個問題,您可以使用 XPath 運算式建立自訂篩選器 ([檢視/自訂篩選]),來包含特定的時間範圍。

另請參閱