サービス トレース ビューアー ツール (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) を追加しています。 そのリスナーのログ ファイルの名前を SdrConfigExample.e2e
に設定するために、initializeData
属性が使用されています。 ログ ファイルは、単純なファイル名と完全修飾パスを置き換えることができます。
この例では、SdrConfigExample.e2e という名前のルート ディレクトリにファイルが作成されています。 「WCF トレース ファイルを開いて表示する」セクションの説明に従いトレース ビューアーを使用してファイルを開くと、送信済みのメッセージがすべて表示されます。
トレース レベルは switchValue
設定で制御します。 使用できるトレース レベルを次の表に示します。
トレース レベル | 説明 |
---|---|
重大 | - フェールファストとイベント ログのエントリをログに記録し、関連付け情報をトレースします。 Critical レベルを使用する可能性が高い場合の例を次に示します。 - AppDomain がハンドルされない例外のためにダウンした。 - アプリケーションが開始に失敗する。 - エラーの原因になったメッセージが、プロセスの MyApp.exe から発生した。 |
エラー | - すべての例外をログに記録します。 Error レベルは、次のような場合に使用できます。 - 無効なキャスト例外のために、コードがクラッシュした。 - "エンドポイントの作成に失敗しました" という例外によって、アプリケーションが起動時に失敗する。 |
警告 | - エラーまたは重大なエラーにつながる可能性のある条件が存在します。 このレベルは次のような場合に使用できます。 - アプリケーションが、調整設定の範囲を超えた要求数を受信している。 - 受信側キューが、構成された容量の 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 トレース ファイルを開いて表示する
サービス トレース ビューアーは、次の 3 種類のファイルをサポートします。
WCF トレース ファイル (.svcLog)
イベント トレース ファイル (.etl)
Crimson トレース ファイル
サービス トレース ビューアーを使用すると、サポートされているトレース ファイルを開いたり、トレース ファイルを追加して統合したりできます。トレース ファイルのグループを同時に開いてマージすることもできます。
トレース ファイルを開くには
- サービス トレース ビューアーを起動するには、コマンド ウィンドウで WCF のインストール場所 (C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin) に移動し、「
SvcTraceViewer.exe
」と入力します。
Note
サービス トレース ビューアー ツールは、2 種類のファイル .svclog と .stvproj を関連付けることができます。 コマンド ラインで 2 つのパラメーターを使用して、ファイル拡張子を登録および登録解除できます。
/register: SvcTraceViewer.exe がファイル拡張 ".svclog" と ".stvproj" の関連付けを登録します。
/unregister: SvcTraceViewer.exe への ".svclog" と ".stvproj" の関連付けの登録を解除します。
サービス トレース ビューアーを開始したら、 [File](ファイル) をクリックして、 [Open](開く) をポイントします。 トレース ファイルが格納されている場所に移動します。
開くトレース ファイルをダブルクリックします。
Note
複数のトレース ファイルを同時に選択して開くには、Shift キーを押しながら、複数のトレース ファイルをクリックします。 サービス トレース ビューアーは、すべてのファイルの内容をマージし、1 つのビューで表示します。 たとえば、クライアントとサービスの両方のトレース ファイルを開くことができます。 これは、構成でメッセージ ログとアクティビティ伝達を有効にしている場合に役立ちます。 この方法では、クライアントとサービスのメッセージ交換を調べることができます。 また、ビューアーに複数のファイルをドラッグしたり、 [Project](プロジェクト) タブを使用することもできます。詳細については、「プロジェクトの管理」セクションを参照してください。
開いているコレクションに追加のトレース ファイルを追加するには、 [File](ファイル) をクリックし、 [Add](追加) をポイントします。 開いているウィンドウで、トレース ファイルの場所に移動し、追加するファイルをダブルクリックします。
注意事項
200 MB を超えるトレース ログ ファイルを読み込むことはお勧めできません。 この制限を超えるファイルを読み込もうとすると、使用するコンピューター リソースによっては読み込みプロセスに時間がかかる場合があります。 サービス トレース ビューアー ツールが長時間応答しない場合や、コンピューターのメモリを使い果たしてしまう場合があります。 これを回避するには、部分読み込みを構成することをお勧めします。 部分読み込みの方法の詳細については、「規模の大きいトレース ファイルの読み込み」セクションを参照してください。
イベント トレースと Crimson トレース
ビューアーのネイティブ形式は、WCF が出力するアクティビティ トレース形式です。 別の形式で出力されるトレースは、ビューアーが表示する前に変換される必要があります。 現在では、ビューアーはアクティビティ トレース形式の他に、イベント トレースと Crimson トレースをサポートします。
アクティビティ トレースを含まないファイルを開くと、ビューアーはそのファイルを変換しようとします。 変換されるトレース データを含むファイルの名前と場所を指定する必要があります。 データが変換されたら、ビューアーは新しいファイルの内容を表示します。
Note
変換には、変換後のトレース データを格納するためのディスク領域が必要です。 変換を開始する前にデータを格納するための十分な空きディスク領域を確保してください。 そうでない場合、変換は失敗します。
プロジェクトの管理
ビューアーは、複数のトレース ファイルの表示を容易にするためにプロジェクトをサポートします。 たとえば、クライアントとサービスの両方のトレース ファイルがある場合は、それらをプロジェクトに追加できます。 追加したら、プロジェクトを開くたびに、プロジェクト内のすべてのトレース ファイルが同時に読み込まれます。
プロジェクトの管理には、次の 2 つの方法があります。
[File](ファイル) メニューで、プロジェクトを開き、保存し、閉じることができます。
[Project](プロジェクト) タブで、プロジェクトにファイルを追加できます。
WCF トレースの表示
WCF により、アクティビティ トレース形式を使用してトレースが出力されます。 アクティビティ トレース モデルでは、各トレースはそれぞれの目的に従ってアクティビティにグループ化されます。 論理制御フローは、アクティビティ間で転送されます。 たとえば、アプリケーションの有効期間の間、多くの "メッセージ送信アクティビティ" が出現したり消えたりします。 トレースとアクティビティの表示、およびサービス トレース ビューアーのユーザー インターフェイスの詳細については、「サービストレースビューアーを使用した相関トレースの表示とトラブルシューティング」を参照してください。
別のビューへの切り替え
サービス トレース ビューアーは、次の別のビューを提供します。 これらのビューは、ビューアーの左ペインにタブとして表示され、 [View](表示) メニューからもアクセスできます。
アクティビティ ビュー
[Project View (プロジェクト ビュー)]
メッセージ ビュー
グラフ ビュー
アクティビティ ビュー
トレース ファイルを開いたら、アクティビティにグループ化されたトレースと表示されたトレースを左ペインの [Activity](アクティビティ) ビューで確認できます。
[Activity](アクティビティ) ビューには、アクティビティ名、アクティビティ内のトレース数、期間、開始時刻と終了時刻が表示されます。
表示されたアクティビティのいずれかをクリックすると、そのアクティビティ内のトレースが右側のトレース ペインに表示されます。 その詳細を表示するトレースを選択できます。
複数のアクティビティを選択するには、Ctrl キーまたは Shift キーを押しながら、目的のアクティビティをクリックします。 トレース ペインは、選択されたアクティビティのすべてのトレースを表示します。
アクティビティをダブルクリックすると、 [Graph](グラフ) ビューに表示されます。 別の方法では、アクティビティを選択して [Graph](グラフ) ビューに切り替えます。
Note
アクティビティ "000000000000" は、グラフ ビューに表示できない特別なアクティビティです。 他のすべてのアクティビティがリンクされているため、このアクティビティを表示すると、パフォーマンスに深刻な影響が生じます。
列のタイトルをクリックすると、アクティビティ一覧が並べ替えられます。 警告トレースを含むアクティビティは黄色の背景を持ち、エラー トレースを含むアクティビティは赤色の背景を持ちます。
さまざまな種類のアクティビティがあり、それぞれの種類は各アクティビティの左側にあるアイコンに対応します。 それぞれのアイコンの意味については、「トレース アイコンの理解」セクションを参照してください。
[Project View (プロジェクト ビュー)]
このビューを使用すると、現在のプロジェクトのトレース ファイルを管理できます。 詳細については、「プロジェクトの管理」セクションを参照してください。
メッセージ ビュー
このビューには、アクション、日時、プロセス、アクティビティ、送信元と送信先など、すべてのメッセージ ログ トレースが表示され、関連付けられているメッセージ ログ トレースの詳細に移動できます。 メッセージ フロー間を簡単に移動できるよう、アクティビティの境界、プロセスまたはスレッド、または送信と受信によって、メッセージ ログ トレースをグループ化することができます。
グラフ ビュー
このビューには、特定のアクティビティのトレース データがグラフ形式で表示されます。 グラフ形式を使用すると、イベントのステップ実行やデータが複数のアクティビティ間を移動するときのそれらの相互関係を確認できます。
[Graph](グラフ) ビューに切り替えるには、 [Activity](アクティビティ) ビューでアクティビティを選択して [Activity](アクティビティ) タブをクリックするか、 [Message](メッセージ) ビューでメッセージ ログ トレースを選択します。 複数のトレース ファイルが読み込まれ、アクティビティが複数のファイルのトレースに関係している場合は、関連するすべてのトレースがグラフ ビューに表示されます。 アクティビティやメッセージ ログ トレースをダブルクリックすることでも、 [Graph](グラフ) ビューが表示されます。
[Graph](グラフ) ビューでは、各垂直列はアクティビティを表し、列内の各ブロックはトレースを表します。 アクティビティは、プロセス (またはスレッド) によってグループ化されます。 アクティビティ間の小さな矢印は、転送を表します。 プロセス間の大きな矢印は、メッセージ交換を表します。 選択範囲のアクティビティは、常に黄色です。
グラフでのトレースの選択
グラフ内のブロックをクリックします。
上方向キーや下方向キーを使用して、隣接するトレースを選択します。
トレース ペインや詳細ペインでトレース情報を確認します。
アクティビティ転送の展開または折りたたみ
選択範囲のアクティビティが別のアクティビティに転送されるとき、アクティビティ転送を展開できます。 展開によって、転送を追跡できます。
アクティビティ転送を展開または折りたたむには
転送アイコンの左側に [+] 記号の付いた転送トレースを見つけます。
[+] をクリックするか、キーボードの Ctrl + 正符号 (+) キーを押します。
次のアクティビティが、グラフに表示されます。
転送アイコンの左側に "-" 符号が表示されます。 [-] をクリックするか、キーボードの Ctrl + マイナス記号 (-) キーを押すと、アクティビティ転送が折りたたまれます。
Note
アクティビティに複数の転送があるとき、転送の 1 つを展開すると、ルート アクティビティから新しいアクティビティまでのアクティビティが表示されます。 これらの新しいアクティビティは、折りたたまれた形式で表示されます。 これらのアクティビティの詳細を確認する場合は、グラフのヘッダーにある展開アイコンをクリックすると、これらのアクティビティが垂直方向に展開されます。
垂直方向へのアクティビティの展開または折りたたみ
アクティビティを折りたたむと、ビューアーは、アクティビティ グラフで不要な詳細を非表示にします。 折りたたまれたアクティビティでは、個々のトレースは表示されません。 転送トレースだけが表示されます。 アクティビティのすべてのトレースを表示する場合は、グラフのヘッダーにあるアクティビティの展開記号をクリックすると、アクティビティが垂直方向に展開されます。
アクティビティを垂直方向に展開または折りたたむには
アクティビティ ヘッダーの [+] アイコンをクリックすると、アクティビティが垂直方向に展開されます。
すべてのトレースがグラフに表示されます。
アクティビティ ヘッダーの [-] アイコンをクリックすると、アクティビティが垂直方向に折りたたまれます。
重要な転送、メッセージ ログ、警告トレース、および例外トレースだけがアクティビティに表示されます。
オプション
グラフ ビューの [Option](オプション) メニューから 2 つのオプションを選択できます。
[Show Activity Boundary Traces] は、オフにすると、グラフでアクティビティ境界トレースが無視されます。
[Show Non-message Verbose Traces] は、オフにすると、メッセージ トレース以外の Verbose レベルのトレースが無視されます。 ほとんどの場合、詳細レベルのトレースは分析には重要ではありません。 このオプションは、詳細レベルのトレースを分析しないで、重要なトレースだけに絞る場合に役立ちます。
レイアウト モード
ビューアーには、プロセスとスレッドの 2 つのレイアウト モードがあります。 この設定は、編成の最大の単位を定義します。 既定のレイアウト モードは、プロセスです。このモードは、アクティビティがグラフではプロセスによってグループ化されることを示します。
実行リスト
グラフで表示されるプロセスまたはスレッドをこのドロップダウン リストから選択できます。 たとえば、2 つ (A と B) のクライアントと 1 つのサービスのトレース ファイルが開いているときに、サービスとクライアント A だけをグラフに表示する場合は、リストからクライアント B の選択を解除します。
トレース詳細の表示
トレース詳細を表示するには、トレース ペインでトレースを選択します。 詳細が、詳細ペインに表示されます。
トレース ペイン
サービス トレース ビューアーの右上のペインがトレース ペインです。 トレース ペインは、選択されたアクティビティのすべてのトレースを、トレース レベル、スレッド ID、プロセス名などの情報と共に表示します。
トレースの未処理の XML をクリップボードにコピーするには、トレースを右クリックし、 [Copy Trace to Clipboard](トレースをクリップボードへコピー) を選択します。
詳細ペイン
サービス トレース ビューアーの左下のペインが詳細ペインです。 詳細ペインには、トレース詳細を表示するために 3 つのタブがあります。
[Formatted](書式設定) ビューには、情報が整理されて表示されます。 このビューは、テーブルとツリーの既知のすべての XML 要素の情報を判読しやすいように表示します。
[XML] ビューには、選択したトレースに対応する XML が表示されます。 このビューは、強調表示と構文色をサポートします。 [Find](検索) を使用して文字列を検索する場合は、検索結果が強調表示されます。
[Message](メッセージ) ビューには、メッセージ ログ トレースの XML のメッセージ部分が表示されます。 メッセージ以外のトレースを選択すると、このビューは非表示になります。
WCF トレースのフィルター処理
トレースの分析を容易に行うために、次の方法でフィルター処理します。
フィルター ツール バーから定義済みのフィルターとカスタム フィルターにアクセスできます。 フィルター ツール バーを有効にするには、 [View](表示) メニューを使用します。
ビューアーの定義済みフィルターを使用して、WCF トレースの部分を選択的にフィルター処理できます。 既定では、すべてのインフラストラクチャ トレースが通過できるように設定されます。 このフィルターの設定は、 [View](表示) メニューの [Filter Options](フィルター オプション) で定義されています。
カスタム XPath フィルターを使用すると、フィルター処理を完全に制御できます。 それらは、 [View](表示) メニューの [Custom Filter](カスタム フィルター) で定義できます。
すべてのフィルターを通過するトレースだけが表示されます。
フィルター ツール バーの使用
フィルター ツール バーは、ツールの上部に表示されます。 このツール バーが表示されていない場合は、 [View](表示) メニューで有効にできます。 バーには、3 つのコンポーネントがあります。
[Look for](検索対象): [Look for](検索対象) では、フィルター操作で検索する対象を定義します。 たとえば、プロセス X のコンテキストで出力されたすべてのトレースを検索する場合は、このフィールドを X に設定し、 [Search In](検索場所) フィールドを [Process Name](プロセス名) に設定します。 時間ベースのフィルターを選択すると、このフィールドは、DateTime セレクター コントロールに変更されます。
探す場所: このフィールドは、適用するフィルターの種類を定義します。
レベル: レベル設定では、フィルターが許容する最小トレース レベルを定義します。 たとえば、レベルが Error と Up に設定されている場合は、Error レベルと Critical レベルのトレースだけが表示されます。 このフィルターは、検索対象と検索場所で指定された検索条件と組み合わせます。
[Filter Now](フィルター実行) ボタンは、フィルター操作を開始します。 一部のフィルターは、特に大規模なデータ セットに適用される場合は完了に長時間かかります。 フィルター操作をキャンセルするには、 [Operations](操作) メニューのステータス バーに表示される [Stop](停止) ボタンを押します。
[Clear](クリア) ボタンは、定義済みフィルターとカスタム フィルターをリセットして、すべてのトレースの通過を許可します。
フィルター オプション
ビューアーは、ビューから WCF トレースを自動的に削除できます。 トランザクション関連のトレースをビューから削除するなど、WCF の特定の領域から出力されるトレースを選択的に削除できます。
このフィルターの設定は、 [View](表示) メニューの [Filter Options](フィルター オプション) で定義されています。
カスタム フィルター
XML パス言語 (XPath) に慣れている場合は、その言語でカスタム フィルターを構築して、トレース データから関係する任意の XML 要素を検索できます。 フィルターには、フィルター ツール バーからアクセスできます。
カスタム フィルターは、パラメーターを含むことができます。 既存のカスタム フィルターをインポートすることもできます。
カスタム フィルターの作成
フィルターは、次の 2 つの方法で作成できます。
テンプレート ウィザードを使用したカスタム フィルターの作成
既存のトレースをクリックし、トレースの構造に基づいてフィルターを作成できます。 この例では、スレッド ID に基づいてカスタム フィルターを作成します。
ビューアーの右上にあるトレース ペインで、フィルター処理する要素を含むトレースを選択します。
トレース ペインの上部にある [Create Custom Filter](カスタム フィルターの作成) ボタンをクリックします。
表示されるダイアログ ボックスにフィルターの名前を入力します。 この例では、「
Thread ID
」と入力します。 また、フィルターの説明も提供できます。左側のツリー ビューは、手順 1. で選択したトレース レコードの構造を表示します。 検索条件の作成対象となる要素を参照します。 この例では、XPath: /E2ETraceEvent/System/Execution/@ThreadID ノードに存在する ThreadID を参照します。 ツリー ビューで ThreadID 属性をダブルクリックします。 これにより、ダイアログの右側に属性の式が作成されます。
ThreadID 条件のパラメーター フィールドを None から "{0}" に変更します。 この手順によって、フィルターの適用時に ThreadID 値を構成できます。 (「フィルターの適用方法」セクションを参照してください)。パラメーターは 4 つまで定義できます。 条件は、OR 演算子を使用して結合されます。
[OK] をクリックして、フィルターを作成します。
Note
テンプレート ウィザードを使用してフィルターを作成したら、編集を手動でのみ行うことができます。 以前に作成されたフィルターのウィザードをアクティブにすることはできません。 また、テンプレート ウィザードで作成された XPath フィルターの条件は、OR 演算子を使用して結合されます。 AND 演算子が必要な場合は、フィルター式の作成後に編集できます。
手動によるカスタム フィルターの作成
カスタム フィルター メニューを使用すると、XPath フィルターを手動で入力できます。
[View](表示) メニューの [Custom Filters](カスタム フィルター) メニュー項目をクリックします。
表示されるダイアログで、 [New](新規作成) をクリックします。
少なくともフィルター名と XPath 式を指定します。
[OK] をクリックします。
カスタム フィルターの適用
カスタム フィルターを作成したら、フィルター ツール バーからアクセスできます。 フィルター ツール バーの [Search In](検索場所) フィールドで、適用するフィルターを選択します。 前の例では、"Thread ID" を選択します。
[Find What](検索する値) フィールドで検索する値を指定します。 例では、検索するスレッドの ID を入力します。
[Filter Now](フィルター実行) をクリックし、操作結果を確認します。
フィルターが複数のパラメーターを使用する場合は、区切り記号として ";" を使用して、 [Find What](検索する値) フィールドにパラメーターを入力します。 たとえば、"1;findValue;text" という文字列は、3 つのパラメーターを定義します。 ビューアーにより、フィルターの {0} パラメーターに "1" が適用されます。 "findValue" と "text" はそれぞれ、{1} と {2} に適用されます。
カスタム フィルターの共有
カスタム フィルターは、異なるセッション間や異なるユーザー間で共有できます。 フィルターを定義ファイルにエクスポートしたり、このファイルを別の場所にインポートすることができます。
カスタム フィルターをインポートするには
[View](表示) メニューの [Custom Filters](カスタム フィルター) をクリックします。
開いたダイアログ ボックスで、 [Import](インポート) ボタンをクリックします。
カスタム フィルター ファイル (.stvcf) に移動し、そのファイルをクリックし、 [Open](開く) をクリックします。
カスタム フィルターをエクスポートするには
[View](表示) メニューの [Custom Filters](カスタム フィルター) をクリックします。
開いているダイアログ ボックスで、エクスポートするフィルターを選択します。
[エクスポート] ボタンをクリックします。
カスタム フィルター定義ファイル (.stvcf) の名前と場所を指定し、 [Save](保存) ボタンをクリックします。
Note
これらのカスタム フィルターは、サービス トレース ビューアーからのみインポートとエクスポートを実行できます。 他のツールで読み取ることはできません。
データの検索
ビューアーは、データを検索する次の方法を提供します。
検索ツール バーを使用すると、最も一般的な検索オプションにすばやくアクセスできます。
検索ダイアログは、詳細な検索オプションを提供します。 検索ダイアログには、 [Edit](編集) メニューやショートカットの Ctrl + F キーを使用してアクセスできます。
検索ツール バーは、ビューアーの上部に表示されます。 このツール バーが表示されていない場合は、 [View](表示) メニューで有効にできます。 バーには、2 つのコンポーネントがあります。
Find What: 検索キーワードを入力できます。
検索場所: 検索範囲を入力できます。 すべてのアクティビティを検索するか、現在のアクティビティだけを検索するかを選択できます。
検索ダイアログは、2 つの追加オプションを提供します。
Find target:
[Raw log data](生のログ データ) オプションは、すべての未処理データからキーワードを検索します。
[XML Text](XML テキスト) オプションと [XML Attribute](XML 属性) オプションは、XML 要素だけを検索します。
[Logged Message](ログ メッセージ) オプションは、メッセージだけからキーワードを検索します。
[Ignore root activity](ルート アクティビティを無視する): 検索で "000000000000" アクティビティでのトレースが無視されます。 ルート アクティビティに数千のトレースがあり、その大部分が転送である場合は、これにより、規模の大きいトレース ファイルのパフォーマンスが強化されます。
トレースの移動
アプリケーションの実行時には、トレースはステップごとに記録されます。このため、トレース内を移動すると、アプリケーションのデバッグに役立ちます。 サービス トレース ビューアーは、トレースを移動するさまざまな方法を提供します。
ステップ前進またはステップ後退
それぞれのトレースをプログラムのコード行と見なすと、ステップ前進は、Visual Studio 統合開発環境 (IDE) の "ステップ オーバー" とほぼ同じです。 違いは、トレースではステップ後退もできることです。 ステップ前進は、アクティビティの次のトレースに移動することを意味します。
ステップ前進: [Activity](アクティビティ) メニューを使用するか、F10 キーを押します。 トレース ペインで下方向キーも使用できます。
ステップ後退 : [Activity](アクティビティ) メニューを使用するか、F9 キーを押します。 トレース ペインで上方向キーも使用できます。
Note
これを使用すると、別のプロセスで発生するアクティビティに移動したり、コンピューター間で有効なアクティビティ ID を WCF メッセージで保持できるため、別のコンピューターで発生するアクティビティにも移動できます。
転送の追跡
転送トレースは、トレース ファイルの特別なトレースです。 アクティビティは、転送トレースによって別のアクティビティに転送できます。 たとえば、"アクティビティ A" を "アクティビティ B" に転送できます。 この場合、"アクティビティ A" には、"To: Activity" という名前の転送トレースと転送アイコンがあります。 この転送トレースは、2 つのトレース間のリンクです。 "アクティビティ B" の最後には、"アクティビティ A" に転送を返すための転送トレースもあります。 これは、A が B を呼び出した後に B が返すプログラムの関数呼び出しに類似しています。
"転送の追跡" は、デバッガーの "ステップ イン" に類似しています。 転送の追跡では、転送を A から B にまで追跡します。他のトレースにはまったく影響ありません。
転送を追跡するには、マウスを使用する場合とキーボードを使用する場合の 2 つの方法があります。
マウスの使用 : トレース ペインで転送トレースをダブルクリックします。
キーボードの使用: 転送トレースを選択し、 [Activity](アクティビティ) メニューの [Follow Transfer](転送の追跡) を使用するか、F11 キーを押します
Note
多くの場合、アクティビティ A がアクティビティ B に転送すると、アクティビティ A は、アクティビティ B がアクティビティ A に転送を返すまで待機します。これは、アクティビティ B がアクティブにトレースしている間、アクティビティ A はトレースのログを記録しないことを意味します。 ただし、アクティビティ A が待機しないでトレースのログ記録を続行することも可能です。 また、アクティビティ B がアクティビティ A に転送を返さないことも可能です。したがって、アクティビティ転送は、この意味では関数呼び出しとは異なります。 グラフ ビューでアクティビティ転送をさらに理解することができます。
次の転送または前の転送へのジャンプ
現在のアクティビティを分析する場合や複数のアクティビティが選択されている場合に選択されたアクティビティを分析する場合は、転送先のアクティビティをすばやく検索する必要があります。 [Jump to next transfer](次の転送へ移動) を使用すると、アクティビティで次の転送トレースを見つけることができます。 転送トレースを見つけたら、[Follow transfer](転送の追跡) を使用して次のアクティビティにステップ インできます。
[Jump to Next Transfer](次の転送へ移動): [Activity](アクティビティ) メニューを使用するか、Ctrl + F10 キーを押します。
[Jump to Previous Transfer](前の転送へ移動): [Activity](アクティビティ) メニューを使用するか、Ctrl + F9 キーを押します。
グラフ ビュー内の移動
アクティビティ ペインやトレース ペイン内の移動はデバッグと同じですが、 [Graph](グラフ) ビューを使用すると、ナビゲーションの豊富な機能を体験できます。 詳細については、「グラフ ビュー」セクションを参照してください。
規模の大きいトレース ファイルの読み込み
トレース ファイルは、非常に大きくなる可能性があります。 たとえば、"詳細" レベルのトレースをオンにすると、数分の実行で生成されるトレース ファイルは、ネットワーク速度や通信パターンによって異なりますが、すぐに数百メガバイトやそれ以上に膨張します。
非常に大きなトレース ファイルをサービス トレース ビューアーで開くと、システムのパフォーマンスに悪影響を及ぼす可能性があります。 読み込み速度と読み込み後の応答時間が低下する可能性があります。 実速度は、ハードウェア構成によって異なる場合があります。 ほとんどの PC では、200 MB を超えるトレース ファイルを読み込むと、パフォーマンスに深刻な影響が生じます。 1 GB を超えるトレース ファイルの場合、ツールが、使用可能なすべてのメモリを使い果たし、非常に長い時間応答が停止する可能性があります。
規模の大きいトレース ファイルの分析で読み込みや応答時間の低下を回避するために、サービス トレース ビューアーには、"部分読み込み" という機能が用意されています。この機能を使用すると、トレースの小さな部分だけが一度に読み込まれます。 たとえば、サーバー上で数日間実行して 1 GB を超えたトレース ファイルがあるとします。 エラーが発生してトレースを分析するとき、トレース ファイル全体を開く必要がありません。 代わりに、エラーが発生したと考えられる特定期間内のトレースを読み込むことができます。 範囲が狭いので、サービス トレース ビューアー ツールはファイルを高速に読み込み、ユーザーは狭い範囲のデータからエラーを特定することができます。
部分読み込みの有効化
部分読み込みを手動で有効にする必要はありません。 読み込もうとするトレース ファイルのサイズ全体が 40 MB を超えると、読み込む部分を選択させるために、サービス トレース ビューアーは自動的に、部分読み込みのダイアログを表示します。
Note
トレースは期間を通して均等に分散していない可能性があるため、部分読み込みのツール バーで指定する期間の長さは、示される読み込みサイズに比例していない可能性があります。 実際の読み込みサイズは、部分読み込みのダイアログで示される推定サイズよりも小さい可能性があります。
部分読み込みの調整
トレース ファイルを部分的に読み込んだ後に、読み込むデータ セットを変更したい場合があります。 これを行うには、ビューアーの上部にある部分読み込みのツール バーを調整します。
マウスでツール バーを移動するか、開始時刻と終了時刻を入力します。
[Adjust](調整) ボタンをクリックします。
トレース アイコンの理解
次に示すのは、サービス トレース ビューアー ツールによってさまざまな項目を表すために、 [Activity](アクティビティ) ビュー、 [Graph](グラフ) ビュー、 [Trace](トレース) ペインで使用されるアイコンの一覧です。
Note
分類されていない一部のトレース ("メッセージが閉じている" など) にはアイコンがありません。
アクティビティ トレースのトレース
アイコン | 説明 |
---|---|
Warning トレース: Warning レベルで出力されるトレース | |
Error トレース : Error レベルで出力されるトレース | |
アクティビティ Start トレース : アクティビティの開始をマークするトレース。 ここにはアクティビティの名前が指定されています。 アプリケーションのデザイナーや開発者として、プロセスまたはスレッドごとにアクティビティ ID につき 1 つのアクティビティ Start トレースを定義する必要があります。 アクティビティ ID がトレース相関対象のトレース ソースに反映されている場合、同じアクティビティ ID に対して Start (トレース ソースにつき 1 つ) が複数存在することがあります。 Start トレースは、ActivityTracing がトレース ソースで有効な場合に出力されます。 |
|
アクティビティ Stop トレース : アクティビティの終了をマークするトレース。 . ここにはアクティビティの名前が指定されています。 アプリケーションのデザイナーや開発者として、トレース ソースごとにアクティビティ ID につき 1 つのアクティビティ Stop トレースを定義する必要があります。 トレース時間の単位が十分に小さくない場合を除き、指定したトレース ソースからのトレースは、そのトレース ソースからアクティビティ Stop が出力された後には何も表示されません。 これが起こると、同じ時刻の 2 つのトレース (Stop を含む) が、交互に表示される場合があります。 アクティビティ ID がトレース相関対象のトレース ソースに反映されている場合、同じアクティビティ ID に対して Stop (トレース ソースにつき 1 つ) が複数存在することがあります。 Stop トレースは、ActivityTracing がトレース ソースで有効な場合に出力されます。 | |
アクティビティ Suspend トレース: アクティビティが中断した時刻をマークするトレース。 アクティビティが再開されるまで、中断したアクティビティではトレースは出力されません。 アクティビティの中断とは、トレース ソースのスコープにおいてそのアクティビティで何も処理が行われていないことです。 トレースの中断/再開は、プロファイリングに便利です。 Suspend トレースは、ActivityTracing がトレース ソースで有効な場合に出力されます。 | |
アクティビティ Resume トレース : アクティビティが中断した後に再開した時刻をマークするトレース。 アクティビティでトレースを再度出力できます。 トレースの中断/再開は、プロファイリングに便利です。 Resume トレースは、ActivityTracing がトレース ソースで有効な場合に出力されます。 | |
Transfer: 論理制御フローがあるアクティビティから別のアクティビティに転送されるときに出力されるトレース。 転送の発生元のアクティビティは、転送の移動先のアクティビティと並行して作業を続行できます。 Transfer トレースは、ActivityTracing がトレース ソースで有効な場合に出力されます。 | |
Transfer From: 別のアクティビティから現在のアクティビティへの転送を定義するトレース。 | |
Transfer To: 現在のアクティビティから別のアクティビティへの論理制御フローの転送を定義するトレース。 |
WCF トレース
アイコン | 説明 |
---|---|
Message Log トレース: System.ServiceModel.MessageLogging トレース ソースが有効な場合に、メッセージ ログ機能によって WCF メッセージがログに記録されるときに出力されるトレース。 このトレースをクリックすると、メッセージが表示されます。 メッセージには、構成可能なログ ポイントが 4 つ (ServiceLevelSendRequest、TransportSend、TransportReceive、および ServiceLevelReceiveRequest) あり、これらは、メッセージ ログ トレースの messageSource 属性でも指定できます。 |
|
Message Received トレース: System.ServiceModel トレース ソースが Information レベルか Verbose レベルで有効な場合に、WCF メッセージが受信されるときに出力されるトレース。 このトレースは、アクティビティの [Graph](グラフ) ビューでメッセージ相関矢印を表示するために重要です。 |
|
Message Sent トレース: System.ServiceModel トレース ソースが Information レベルか Verbose レベルで有効な場合に、WCF メッセージが送信されるときに出力されるトレース。 このトレースは、アクティビティの [Graph](グラフ) ビューでメッセージ相関矢印を表示するために重要です。 |
Activities
アイコン | 説明 |
---|---|
Activity: 現在のアクティビティが一般的なアクティビティであることを示します。 | |
Root アクティビティ: プロセスのルート アクティビティを示します。 |
WCF アクティビティ
アイコン | 説明 |
---|---|
Environment アクティビティ: WCF ホストまたはクライアントを作成したり、開いたり、閉じたりするアクティビティ。 これらの段階で発生したエラーは、このアクティビティで表示されます。 | |
Listen アクティビティ: リスナーに関連するトレースをログに記録するアクティビティ。 このアクティビティ内で、リスナー情報と接続要求を表示できます。 | |
Receive Bytes アクティビティ : 2 つのエンドポイント間の接続上で受信バイトに関連するすべてのトレースをグループ化するアクティビティ。 このアクティビティは、http.sys などのアクティビティを伝達する転送アクティビティと相関させる場合に必要です。 中止などの接続エラーが、このアクティビティで表示されます。 | |
Process Message アクティビティ: WCF メッセージの作成に関連するトレースをグループ化するアクティビティ。 不正なエンベロープや誤った形式のメッセージが原因のエラーが、このアクティビティで表示されます。 このアクティビティ内で、メッセージ ヘッダーを調べて、アクティビティ ID が呼び出し元から伝達されたかどうかを確認できます。 これが可能であれば、読み出し元と呼び出し先のトレース間を相関するために、Process Action アクティビティ (次のアイコン) に転送するときに、伝達されたアクティビティ ID をそのアクティビティに割り当てることもできます。 | |
Process Action アクティビティ: 2 つのエンドポイント間の WCF 要求に関連するすべてのトレースをグループ化するアクティビティ。 両方のエンドポイントの構成で、propagateActivity が true に設定されている場合は、両方のエンドポイントのすべてのトレースが、直接相関関係を示すために 1 つのアクティビティにマージされます。 このアクティビティは、転送やセキュリティの処理、ユーザー コード境界への拡張、および戻り (応答が存在する場合) で発生するエラーを含みます。 |
|
Execute User Code アクティビティ: 要求を処理するユーザー コードのトレースをグループ化するアクティビティ。 |
トラブルシューティング
レジストリに書き込むためのアクセス許可がない場合に、"svctraceviewer /register
" コマンドを使用してツールを登録しようとすると、エラー メッセージ "The Microsoft Service Trace Viewer was not registered to the system" (Microsoft サービス トレース ビューアーがシステムに登録されていません) が表示されます。 このエラーが発生したら、レジストリの書き込みアクセスを持つアカウントを使用してログインする必要があります。
また、サービス トレース ビューアー ツールは、アセンブリ フォルダー内の SvcTraceViewer.exe.settings ファイルに設定 (カスタム フィルターやフィルター オプションなど) を書き込みます。 ファイルの読み取りアクセス許可がない場合、ツールの起動は可能ですが、設定を読み込むことはできません。
.etl ファイルを開くときに、エラー メッセージ "トレースの処理中に不明なエラーが発生しました" が表示される場合は、.etl ファイルの形式が無効であることを示します。
アラビア語のオペレーティング システムを使用して作成されたトレース ログを開く場合に、時間ベースのフィルターが機能しません。 たとえば、2005 年がアラビア カレンダーの 1427 年に対応します。 ただし、サービス トレース ビューアー ツールのフィルターがサポートする時間の範囲は、1752 年より前の日付を含みません。 このことは、フィルターで正しい日付を選択できないことを示します。 この問題を解決するには、特定の時間範囲を含むために XPath 式を使用して、カスタム フィルター ( [View](表示) > [Custom Filters](カスタム フィルター) ) を作成します。