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 系結時發生失敗。 |
| 詳細資訊 | - 針對使用者程式代碼和服務進行偵錯層級追蹤。 在下列情況下設定此層級: - 您不確定程式代碼中的哪個方法在發生失敗時呼叫。 - 您已設定不正確的端點,且服務無法啟動,因為保留存放區中的項目已鎖定。 |
| 活動追蹤 | 處理活動和元件之間的流程事件。 此層級可讓系統管理員和開發人員將相同應用程式域中的應用程式相互關聯。 - 活動邊界的記錄:開始/停止。 - 傳輸的追蹤。 |
您可以使用 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)
深紅追蹤檔案
服務追蹤查看器可讓您開啟任何支援的追蹤檔案、新增和整合其他追蹤檔案,或同時開啟和合併一組追蹤檔案。
若要開啟追蹤檔案
- 使用命令視窗啟動服務追蹤查看器,以流覽至您的 WCF 安裝位置(C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin),然後輸入
SvcTraceViewer.exe。
備註
服務追蹤查看器工具可以與兩種檔類型產生關聯:.svclog 和 .stvproj。 您可以在命令列中使用兩個參數來註冊和取消註冊擴展名。
/register:將文件擴展名“.svclog”和“.stvproj”登錄到SvcTraceViewer.exe的關聯中
/unregister: 取消註冊檔案擴展名 ".svclog" 和 ".stvproj" 與 SvcTraceViewer.exe 的關聯
服務追蹤查看器啟動時,按兩下 [ 檔案 ],然後指向 [ 開啟]。 流覽至儲存追蹤檔案的位置。
按兩下您要開啟的追蹤檔案。
備註
按一下多個追蹤檔案時按SHIFT鍵,以同時選取並開啟它們。 服務追蹤查看器會合併所有檔案的內容,並呈現一個檢視。 例如,您可以開啟客戶端和服務的追蹤檔案。 當您在組態中啟用訊息記錄和活動傳播時,這會很有用。 如此一來,您就可以檢查客戶端與服務之間的訊息交換。 您也可以將多個檔案拖曳到查看器中,或使用 [專案 ] 索引卷標。如需詳細資訊,請參閱管理專案一節。
若要將其他追蹤檔案新增至開啟的集合,請按兩下 [ 檔案 ],然後指向 [ 新增]。 在開啟的視窗中,流覽至追蹤檔案的位置,然後按兩下您要新增的檔案。
謹慎
不建議載入大於 200MB 的追蹤記錄檔。 如果您嘗試載入大於此限制的檔案,載入程式可能需要很長的時間,視您的計算機資源而定。 服務追蹤查看器工具可能無法回應很長一段時間,或可能會耗盡計算機的記憶體。 建議您配置部分載入設定以避免這種情況。 如需有關執行此操作的更多資訊,請參閱「載入大型追蹤文件」一節。
事件追蹤和深紅追蹤
查看器的原生格式是WCF發出的活動追蹤格式。 在查看器顯示追蹤之前,必須先轉換以不同格式發出的追蹤。 目前,除了活動追蹤格式之外,查看器還支援事件追蹤和深紅色追蹤。
當您開啟不包含活動追蹤的檔案時,查看器會嘗試轉換檔案。 您必須指定將包含已轉換追蹤資料的檔案名稱和位置。 轉換數據之後,查看器會顯示新檔案的內容。
備註
轉換需要磁碟空間來儲存轉換的追蹤數據。 開始轉換之前,請確定您有足夠的磁碟空間可供儲存數據。 否則,轉換會失敗。
管理專案
查看器支持專案,以利檢視多個追蹤檔案。 例如,如果您有客戶端追蹤檔案和服務追蹤檔案,您可以將它們新增至專案。 然後,每次開啟專案時,專案中的所有追蹤檔案都會同時載入。
有兩種方式可以管理專案:
在 [ 檔案] 選單中,您可以開啟、儲存和關閉專案。
在 [ 專案] 索引標籤中,您可以將檔案新增至專案。
檢視 WCF 追蹤
WCF 會使用活動追蹤格式發出追蹤。 在活動追蹤模型中,個別追蹤會根據其用途被歸入各自的活動。 邏輯控制流程會在活動之間傳輸。 例如,在應用程式的存留期間,許多「訊息傳送活動」會出現並消失。 如需檢視追蹤和活動的詳細資訊,以及服務追蹤查看器的使用者介面,請參閱 使用服務追蹤查看器來檢視相互關聯的追蹤和疑難解答。
切換至不同的檢視
服務追蹤查看器提供下列不同的檢視。 它們會顯示為查看器左窗格中的索引標籤,也可以從 [ 檢視 ] 選單存取。
活動檢視
項目檢視
訊息檢視
圖表檢視
活動檢視
一旦開啟追蹤檔案,您就可以在左側窗格中的 [ 活動 ] 檢視中看到群組成活動的追蹤。
[ 活動 ] 檢視會顯示活動名稱、活動中的追蹤數目、持續時間、開始時間和結束時間。
通過點擊任何列出的活動,該活動中的追蹤將顯示在右側的追蹤窗格中。 然後,您可以選取追蹤來檢視其詳細數據。
您可以按 Ctrl 或 Shift 鍵並按下所需的活動,以選取多個活動。 追蹤窗格會顯示所選活動的所有記錄。
您可以按兩下來顯示活動於圖形檢視中。 替代方式是選取活動,並切換至 [圖形 檢視]。
備註
活動 「0000000000000000」是無法顯示在圖形檢視中的特殊活動。 由於所有其他活動都與其連結,因此顯示此活動會對效能造成嚴重影響。
您可以按下資料列標題來排序活動清單。 包含警告追蹤的活動具有黃色背景,而包含錯誤追蹤的活動則有紅色背景。
有不同類型的活動,每種類型的圖示位於活動的左側。 您可以參考瞭解追蹤圖示一節,以瞭解其意義。
項目檢視
此檢視可讓您管理目前專案中的追蹤檔案。 如需詳細資訊,請參閱管理專案一節。
訊息檢視
此檢視可讓您檢視所有訊息記錄追蹤,包括 Action、Date/Time、Process、Activity 和 From/To,以及瀏覽至相關聯訊息記錄追蹤的詳細數據。 您可以依活動界限、進程/線程或傳送和接收將訊息記錄追蹤分組,以便更輕鬆地瀏覽訊息流程。
圖表檢視
此界面會以圖表形式顯示特定活動的追蹤數據。 圖表形式可讓您查看事件的逐步執行和多個活動之間的相互關聯性,當數據在活動之間移動時。
若要切換至 圖形 檢視,請在 [ 活動 ] 檢視中選取活動,然後按兩下 [ 活動 ] 索引標籤,或在 [訊息 檢視] 中選取訊息記錄追蹤。 如果載入多個追蹤檔案,且活動牽涉到來自多個檔案的追蹤,則所有相關追蹤會出現在圖表檢視中。 按兩下活動和訊息記錄追蹤也會引導您前往 圖形 檢視。
在 圖表 檢視中,每個垂直數據行都代表活動,而數據行中的每個區塊都代表追蹤。 活動會依進程(或線程)分組。 活動之間的小箭號代表傳輸。 進程之間的大箭號代表訊息交換。 選取範圍中的活動一律為黃色。
在圖表中選取軌跡
按兩下圖形中的區塊。
使用上下鍵來選取其鄰近軌跡。
觀察 [追蹤窗格] 和 [詳細數據] 窗格中的追蹤資訊。
展開或折疊活動傳輸
當選取範圍中的活動轉移至另一個活動時,您可以展開活動傳輸。 它可讓您追踪傳輸。
若要展開或折疊活動傳輸,
在傳輸圖示左側找到具有 「+」 符號的傳輸追蹤。
按兩下 “+”,或使用鍵盤按 Ctrl 和 “+”。
下一個活動會出現在圖形中。
“-” 會出現在傳輸圖示的左邊。 按兩下 「-」 符號或按 Ctrl 和 「-」,活動傳輸就會折疊。
備註
當一個活動有多個轉移時,當您展開其中一個轉移時,將顯示從根本活動通往新活動的活動。 這些新活動會以折疊形式顯示。 如果您想要查看這些活動的詳細數據,請按下圖形標頭中的展開圖示,以垂直展開它們。
垂直展開或折疊活動
查看器會藉由折疊活動隱藏活動圖表中不必要的詳細數據。 在折疊的活動中,不會顯示個別軌跡。 只會出現傳輸痕跡。 如果您想要查看活動中的所有軌跡,可以在圖形標頭中點擊活動的展開符號,將活動向下展開。
若要垂直展開或摺疊活動,
按兩下活動標頭中的 「+」 圖示,以垂直展開活動。
請注意,所有追蹤都會顯示在圖表中。
點擊活動標頭中的「-」圖示,將活動垂直收起。
請注意,活動只會顯示重要的傳輸、訊息記錄、警告和例外狀況追蹤。
選項
您可以從 [圖形] 檢視中的 [ 選項 ] 選單選取兩個選項。
顯示「活動邊界追蹤」。取消選取時,圖表中不會顯示活動邊界追蹤。
顯示非訊息詳細資訊追蹤,當未核取時忽略詳細資訊層級追蹤時,訊息追蹤除外。 在大多數情況下,冗長層級的記錄對分析而言通常較不重要。 當您不想分析詳細層級的追蹤,而只想專注於更重要的追蹤時,此選項會很有幫助。
版面配置模式
查看器有兩種版面配置模式: 進程 和 線程。 此設定會定義組織的最大單位。 默認的版面配置模式為 Process,這表示活動會依圖形中的進程分組。
執行清單
您可以從此下拉式清單中選取要顯示在圖表中的進程或線程。 例如,如果您有兩個用戶端的追蹤檔案 (A 和 B) 和一個服務已開啟,而您只想在圖形中顯示服務和用戶端 A,則可以從清單中取消選取用戶端 B。
檢視追蹤詳細數據
若要檢視追蹤詳細資料,請在 [追蹤] 窗格中選取追蹤。 詳細數據會顯示在 [詳細數據] 窗格中。
追蹤窗格
服務追蹤查看器中的右上方窗格是追蹤窗格。 它會列出所選活動中具有額外資訊的所有追蹤,例如追蹤層級、線程標識碼和進程名稱。
您可以用滑鼠右鍵按下追蹤,然後選取 [ 將追蹤複製到剪貼簿],將追蹤的原始 XML 複製到剪貼簿。
詳細資料窗格
服務追蹤查看器中的左下窗格是 [詳細數據窗格]。 它提供三個索引標籤來檢視追蹤詳細數據。
[格式化] 檢視會以更組織的方式顯示資訊。 它會列出數據表和樹狀結構中的所有已知 XML 元素,讓您更容易閱讀和了解資訊。
XML 檢視會顯示所選追蹤對應的 XML。 它支援語法高亮和色彩標示。 當您使用 [尋找 ] 來搜尋字串時,它會醒目提示搜尋結果。
[ 訊息 ] 檢視會顯示訊息記錄追蹤中 XML 的訊息部分。 當您選取非訊息追蹤時,它就看不見了。
篩選 WCF 追蹤
若要更輕鬆地分析追蹤資訊,您可以透過下列方式進行篩選:
篩選工具列提供預先定義和自定義篩選的存取權。 它可透過 [ 檢視 ] 功能表啟用。
查看器預先定義的篩選可用來選擇性地篩選 WCF 追蹤的部分。 根據預設,它會設定為允許所有基礎結構追蹤通過。 此篩選的設定定義在 [檢視] 功能表下的 [篩選選項] 子功能表中。
自定義 XPath 篩選可讓使用者完全控制篩選。 您可以在 [檢視] 選單下的 [自訂篩選] 中定義它們。
只有通過所有過濾器的追蹤會被顯示。
使用篩選工具列
篩選工具列會出現在工具頂端。 如果不存在,您可以在 [ 檢視 ] 功能表中加以啟用。 此欄有三個元件:
尋找: 尋找 會定義篩選作業中要尋找的主體。 例如,如果您想要尋找進程 X 內容中發出的所有追蹤,請將此欄位設定為 X,並將 [搜尋於] 字段設定為 [進程名稱]。 選取時間型篩選時,此字段會變更為 DateTime 選取器控件。
搜尋:此欄位會定義要套用的篩選類型。
層級:層級設定會定義篩選所允許的最低追蹤層級。 例如,如果層級設定為 Error 和 Up,則只會顯示 Error 和 critical 層級的追蹤。 此篩選會結合 [尋找] 和 [搜尋輸入] 所指定的準則。
[ 立即篩選] 按鈕會啟動篩選作業。 某些篩選條件,特別是當它們套用至大型數據集時,需要很長的時間才能完成。 您可以按下 [作業] 選單下狀態列中顯示的 [ 停止 ] 按鈕,以取消篩選 作業 。
清除按鈕會重設預先定義和自訂的篩選條件,允許所有追蹤通過。
篩選選項
查看器可以自動從檢視中移除 WCF 追蹤。 它可以選擇性地移除 WCF 特定區域發出的追蹤,例如,從檢視中移除交易相關的追蹤。
此篩選的設定定義在 [檢視] 功能表下的 [篩選選項] 子功能表中。
自訂篩選
如果您熟悉 XML 路徑語言 (XPath),您可以使用它來建構自定義篩選,以搜尋任何感興趣的 XML 元素的追蹤數據。 篩選可透過篩選工具列存取。
自定義篩選可以包含參數。 您也可以匯入預先存在的自訂篩選。
建立自定義篩選
篩選可以透過兩種方式建立:
使用範本精靈建立自定義篩選
您可以點擊現有的追蹤,然後根據追蹤的結構建立篩選。 此範例會根據線程標識元建立自定義篩選。
在查看器右上方區域的追蹤窗格中,選取包含您要篩選之項目的追蹤。
按兩下位於追蹤窗格頂端的 [ 建立自訂篩選] 按鈕。
在出現的對話框中,輸入篩選的名稱。 在這裡範例中,輸入
Thread ID。 您也可以提供篩選的描述。左側的樹檢視會顯示您在步驟 1 中選取的追蹤記錄結構。 瀏覽到您要為其建立條件的元素。 在此範例中,流覽至 XPath:/E2ETraceEvent/System/Execution/@ThreadID 節點,找到要定位的 ThreadID。 在樹狀檢視中雙擊 ThreadID 屬性。 這會為對話框右邊的屬性建立表達式。
將 ThreadID 條件的參數位段從 None 變更為 『{0}』。 此步驟可讓套用篩選條件時設定 ThreadID 值。 (請參閱如何套用篩選一節)您最多可以定義四個參數。 條件會使用 OR 運算子結合。
按兩下 [確定 ] 以建立篩選。
備註
使用範本精靈建立篩選后,只能手動編輯。 無法啟用向導來處理先前已建立的篩選。 此外,範本精靈中建立的 XPath 篩選條件會使用 OR 運算子結合。 如果您需要 AND 作業,您可以在建立篩選運算式之後加以編輯。
手動建立自定義篩選
[自定義篩選] 功能表可讓您手動輸入 XPath 篩選。
在 [檢視] 功能表中,按兩下 [ 自訂篩選] 功能表項。
在出現的對話框中,按兩下 [ 新增]。
請至少指定篩選名稱和 XPath 運算式。
按一下 [確定]。
套用自定義篩選
建立自定義篩選之後,即可透過篩選工具列存取它。 在篩選工具列的 [ 搜尋中 ] 字段中,選取您要套用的篩選。 針對上述範例,選取 [線程標識符]。
在 [ 尋找內容 ] 欄位中指定您要尋找的值。 在我們的範例中,輸入您要搜尋之線程的標識碼。
按兩下 [ 立即篩選],並觀察作業的結果。
如果您的篩選使用多個參數,請在 [尋找內容 ] 字段中,使用 ';' 作為分隔符輸入。 例如,下列字串會定義 3 個參數:『1;findValue;text'。 查看器會將 『1』 套用至 {0} 篩選的 參數。 'findValue' 和 'text' 分別套用至 {1} 和 {2} 。
共用自定義篩選
自定義篩選可以在不同的會話和不同的用戶之間共用。 您可以將篩選匯出至定義檔,並將此檔案匯入至另一個位置。
若要匯入自訂篩選:
在 [ 檢視] 功能表中,按兩下 [ 自定義篩選]。
在開啟的對話框中,按兩下 [ 匯 入] 按鈕。
流覽至自定義篩選檔案 (.stvcf),按兩下檔案,然後按下 [ 開啟 ] 按鈕。
若要匯出自訂篩選:
在 [檢視] 功能表中,按兩下 [ 自定義篩選]。
在開啟的對話框中,選取您要導出的篩選。
按兩下 [ 匯出] 按鈕。
指定自定義篩選定義檔的名稱和位置 (.stvcf),然後按下 [ 儲存 ] 按鈕。
備註
這些自定義篩選只能從服務追蹤查看器匯入和匯出。 其他工具無法讀取它們。
尋找資料
檢視器提供下列方法來尋找資料:
[尋找] 工具列可讓您快速存取最常見的尋找選項。
[尋找] 對話框提供更多尋找選項。 它可透過 [編輯 ] 功能表或短鍵 Ctrl + F 來存取。
尋找工具列會出現在查看器頂端。 如果不存在,您可以在 [ 檢視 ] 功能表中加以啟用。 該欄有兩個元件:
尋找內容:可讓您輸入搜尋關鍵詞。
查看:可讓您輸入搜尋範圍。 您可以選取是否要搜尋所有活動,或只搜尋目前活動。
[尋找] 對話框提供兩個額外的選項:
尋找目標:
[原始記錄資料] 選項會在所有原始數據中搜尋 關鍵詞。
“XML Text” 和 “XML Attribute” 選項只會在 XML 元素中搜尋。
[記錄的訊息] 選項只會在訊息中搜尋 關鍵詞。
忽略根活動:搜尋會忽略「000000000000」活動中的追蹤痕跡。 當根活動有數千個追蹤時,這會改善大型追蹤檔案中的效能,其中大部分是傳輸。
追蹤導航
由於追蹤會在應用程式運行期間逐步記錄,因此瀏覽追蹤可以幫助您偵錯應用程式。 服務追蹤觀察器提供多種瀏覽追蹤資料的方法。
向前一步或向後一步
如果您將每個追蹤視為程式中的一行程式碼,則向前執行的操作非常類似於 Visual Studio 集成開發環境(IDE)中的「單步執行」。 差別在於您也可以在追蹤中回溯。 向前邁進表示移至下一個活動步驟。
前進:使用 [活動] 功能表,或按「F10」。 您也可以在追蹤窗格中使用箭頭鍵「向下」。
回溯步驟:使用 [活動] 功能表,或按 “F9”。 您也可以在追蹤窗格中使用箭頭鍵「向上」。
備註
這可以引導您至在不同程序中或甚至在不同電腦上發生的活動,因為 WCF 訊息可以攜帶跨越電腦的活動識別碼。
遵循傳輸
傳輸追蹤是追蹤檔案中的特殊追蹤。 活動可以透過遷移痕跡轉移至另一個活動。 例如,「活動 A」可能會傳輸到「活動 B」。 在這種情況下,「活動 A」中有名為「To: Activity」和轉移圖示的轉移痕跡。 此傳輸追蹤是兩個追蹤之間的連結。 在「活動 B」中,活動結尾可能也會有傳輸追蹤,以傳回「活動 A」。 這類似於程式中的函式呼叫:A 會呼叫 B,然後傳回 B。
「追蹤傳輸」類似於調試程式中的「逐步執行」。 它會遵循從 A 到 B 的傳輸。它不會影響其他追蹤。
有兩種方式可以追蹤資料傳輸:使用滑鼠或鍵盤。
使用滑鼠:雙擊追蹤窗格中的傳輸記錄。
透過鍵盤:選取傳輸追蹤,然後在[活動]功能表中使用[追蹤傳輸],或按 "F11"
備註
在許多情況下,當活動 A 傳輸至活動 B 時,活動 A 會等候活動 B 傳輸回活動 A。這表示活動 A 在活動 B 主動追蹤期間沒有記錄任何追蹤。 不過,活動 A 也可能不會等候,並繼續記錄追蹤。 活動 B 也有可能不會轉回活動 A。因此,活動傳輸在此意義上仍與函數調用不同。 您可以在圖表檢視中進一步了解活動傳輸。
跳至下一個或上一個傳輸
當您分析目前的活動,或選取多個活動時選取的活動時,您可能會想要快速尋找其傳輸的活動。 「跳到下一個傳輸」可讓您在活動中找出下一個傳輸的追蹤記錄。 找到傳輸追蹤之後,您可以使用「追蹤傳輸」來逐步執行下一個活動。
跳到 [下一步傳輸]:使用 [ 活動] 功能表,或按 “Ctrl + F10”。
跳到上一個傳輸:使用 [活動] 功能表,或按 “Ctrl + F9”。
在圖表檢視中巡覽
雖然在活動窗格和追蹤窗格中巡覽與偵錯類似,但使用 [圖形 ] 檢視可提供更好的瀏覽體驗。 如需詳細資訊,請參閱「圖形視圖」一節。
載入大型追蹤檔案
追蹤檔案可能非常大。 例如,如果您在「詳細」層級上開啟追蹤,則執行幾分鐘所產生的追蹤檔案很容易會達到數百 MB,甚至更大,這取決於網路速度和通訊模式。
當您在服務追蹤查看器中開啟非常大的追蹤檔案時,系統效能可能會受到負面影響。 載入速度及載入後的回應時間可能很慢。 實際速度會根據硬體組態而不時有所不同。 在大部分的計算機上,載入大於 200M 的追蹤檔案會嚴重影響效能。 對於大於 1G 的追蹤檔案,此工具可能會用盡所有可用的記憶體,或停止回應很長的時間。
為了避免分析大型追蹤檔案的載入和回應時間變慢,服務追蹤查看器提供稱為「部分載入」的功能,一次只會載入一小部分的追蹤。 例如,您可能有超過 1 GB 的追蹤檔案,並在伺服器上執行數天。 發生某些錯誤且您想要分析追蹤時,就不需要開啟整個追蹤檔案。 相反地,您可以在錯誤可能發生的某個時間段內載入追蹤記錄。 因為範圍較小,服務追蹤查看器工具可以更快載入檔案,而且您可以使用較小的數據集來識別錯誤。
啟用部分載入
您不需要手動啟用部分載入。 如果您嘗試載入的追蹤檔案總大小超過 40 MB,服務追蹤查看器會自動顯示 [部分載入] 對話框,讓您選取要載入的部分。
備註
由於追蹤可能不會平均分散在時間範圍中,您在 [部分載入] 工具列中指定的時間長度可能與顯示的載入大小不一致。 實際載入大小可以小於部分載入對話框中的 [估計大小]。
調整部分載入
部分載入追蹤檔案之後,您可能會想要變更所載入的數據集。 您可以藉由調整檢視器頂端的 [部分載入] 工具列來執行此動作。
依滑鼠移動工具列,或輸入開始和結束時間。
按兩下 [ 調整] 按鈕。
瞭解追蹤圖示
以下是服務追蹤查看器工具在 [活動 檢視]、 [圖形 檢視] 和 [ 追蹤 ] 窗格中用來代表不同專案的圖示清單。
備註
某些未分類的追蹤(例如「訊息已關閉」)沒有圖示。
活動追蹤痕跡
| 圖標 | 說明 |
|---|---|
|
警告追蹤:在警告層級發出的追蹤 |
|
錯誤追蹤:在錯誤層級發出的追蹤。 |
|
活動開始追蹤:標示活動開始的追蹤記錄。 其中包含活動的名稱。 身為應用程式設計師或開發人員,您應該為每個活動 ID 在每個進程或線程中定義一個活動開始追蹤。 如果活動標識碼會跨追蹤來源傳播以進行追蹤相互關聯,您接著可以看到相同活動標識碼的多個 Starts (每個追蹤來源一個)。 如果已啟用追蹤來源的 ActivityTracing,則會發出開始追蹤訊號。 |
|
活動結束追蹤:用來標記活動結束的追蹤。 . 其中包含活動的名稱。 身為應用程式設計師或開發人員,您應該為每個追蹤來源的每個活動ID定義一個停止追蹤活動。 除非追蹤時間的粒度不夠精細,否則指定的追蹤來源在其活動停止後不會顯示任何追蹤痕跡。 發生這種情況時,包含停止訊號的兩個具有相同時間的追蹤可能會在顯示時交錯。 如果活動標識碼會傳播到追蹤相互關聯的追蹤來源,您可以看到相同活動標識碼的多個 Stops (每個追蹤來源一個)。 如果追蹤來源已啟用 ActivityTracing,就會發出停止追蹤訊號。 |
|
活動暫停追蹤:標記活動暫停時間的追蹤。 在活動恢復之前,不會在暫停的活動中產生任何追蹤。 暫停的活動表示追蹤來源範圍內的該活動不會發生任何處理。 暫停/恢復記錄對分析非常有用。 如果啟用了追蹤來源的 ActivityTracing,則會發出暫止追蹤。 |
|
活動恢復追蹤:標記活動中止後恢復時間的追蹤。 活動紀錄可能會在該活動中再次生成。 暫停/恢復記錄對分析非常有用。 如果為追蹤來源啟用了 ActivityTracing,就會發出 Resume 追蹤。 |
|
轉移:當邏輯控制流程從一個活動轉移到另一個活動時產生的追蹤記錄。 傳輸來源的活動可能會繼續與接收傳輸的活動同時進行工作。 如果在追蹤來源中啟用 ActivityTracing,則會發出 Transfer 追蹤。 |
|
傳送來源:定義一個從另一個活動移轉至目前活動的追蹤記錄。 |
|
轉移到:定義將邏輯控制流程從目前活動轉移到另一個活動的路徑。 |
WCF 追蹤
| 圖標 | 說明 |
|---|---|
|
訊息記錄追蹤:在啟用 System.ServiceModel.MessageLogging 追蹤來源時,當訊息記錄功能記錄 WCF 訊息時發出的追蹤。 按一下此追蹤紀錄即會顯示訊息。 訊息有四個可設定的記錄點:ServiceLevelSendRequest、TransportSend、TransportReceive 和 ServiceLevelReceiveRequest,也可以由 messageSource 訊息記錄追蹤中的 屬性指定。 |
|
已接收到的訊息追蹤:如果在 Information 或 Verbose 層級啟用 System.ServiceModel 追蹤來源,當 WCF 訊息被接收時會發出追蹤。 此追蹤對於在 [活動 圖表 ] 檢視中檢視訊息相互關聯箭號至關重要。 |
|
訊息傳送追蹤:如果 System.ServiceModel 追蹤來源在 [資訊] 或 [詳細資訊] 層級啟用,當 WCF 訊息傳送時所發出的追蹤。 此追蹤對於在 [活動 圖表 ] 檢視中檢視訊息相互關聯箭號至關重要。 |
活動
| 圖標 | 說明 |
|---|---|
|
活動:指出目前活動是泛型活動。 |
|
根活動:表示進程的根活動。 |
WCF 活動
| 圖標 | 說明 |
|---|---|
|
環境活動:建立、開啟或關閉 WCF 主機或客戶端的活動。 這些階段期間發生的錯誤會出現在此活動中。 |
|
監聽活動:記錄與監聽器相關的追蹤活動。 在此活動中,我們可以檢視接聽程式資訊和連線要求。 |
|
接收位元組活動:將所有與在兩個端點之間的連接上接收傳入位元組相關的追蹤記錄分組的活動。 此活動與傳播其活動識別碼的傳輸活動相互關聯,例如 http.sys。 此活動中會出現連線錯誤,例如連線中止。 |
|
|
處理訊息活動:將與建立 WCF 訊息相關的追蹤分組的活動。 由於信封不正確或訊息格式不正確,錯誤會出現在該活動中。 在此活動內,我們可以檢查訊息標頭,以查看活動標識碼是否已從呼叫端傳播。 如果這是真的,當我們轉移至處理動作活動(下一個圖示)時,我們也可以為該活動指派傳遞的活動ID,以便在呼叫者和被呼叫者的追蹤之間建立相關性。 |
|
程序動作活動:將所有與 WCF 請求相關的追蹤集中於橫跨兩個端點的一項活動。 如果在 propagateActivity 組態中的這兩個端點上設定為 true ,則這兩個端點的所有追蹤都會合併成一個活動以進行直接相互關聯。 這類行為會因運輸或安全處理而產生錯誤,這些錯誤可能延伸到使用者程式代碼的界限,再返回(若有回應)。 |
|
|
執行使用者代碼活動:將使用者代碼追蹤集中起來以處理請求的活動。 |
故障排除
如果您沒有寫入登錄的許可權,當您使用 「svctraceviewer /register命令來註冊此工具時,會收到下列錯誤訊息「Microsoft服務追蹤查看器未註冊至系統」。 如果發生這種情況,您應該使用具有登錄寫入許可權的帳戶登入。
此外,服務追蹤查看器工具會將某些設定(例如自定義篩選和篩選選項)寫入其元件資料夾中的 SvcTraceViewer.exe.settings 檔案。 如果您沒有檔案的讀取許可權,您仍然可以啟動工具,但無法載入設定。
如果您在開啟 .etl 檔案時收到錯誤訊息「處理一或多個追蹤時發生未知的錯誤」,表示 .etl 檔案的格式無效。
如果您使用阿拉伯文作系統開啟建立的追蹤記錄檔,您可能會注意到時間篩選無法運作。 例如,2005年對應至阿拉伯曆法中的年份 1427。 不過,服務追蹤查看器工具篩選器所支持的時間範圍不支援早於 1752 的日期。 這表示您無法在篩選中選取正確的日期。 若要解決此問題,您可以使用 XPath 運算式來建立自定義篩選條件(檢視/自定義篩選),以包含特定時間範圍。