troushoo

カーネルダンプからETWログを抽出

Defrag Tools: #29 - WinDbg - ETW Logging
今回は、マイクロソフトのエンジニアが出演する人気のビデオ、Defrag Toolsの29回目で紹介されていた”WinDbg – ETW Logging”の内容を紹介します。
本ビデオでは、カーネルダンプから、まだディスクに吐き出されていないETW (=Event Tracing for Windows) ログを抽出する方法が紹介されていました。
以下、その内容の紹介です。

【内容】
ETWのログは、定期的にディスクに吐き出されています。ですので、ETWログがまだディスクに吐き出されていない状態でBSoD(= Blue Screen of Death)が発生すると、ディスクに吐き出されないままとなってしまい、通常の方法ではそのログを確認することができません。
ただし、今回紹介する方法を利用すると、カーネルダンプからETWのログを抽出し、確認することができます。
以下、具体的な手順です。

【手順】
0. カーネルダンプをWinDbgで開きます。

1. !wmitrace.strdump を利用して、ダンプがとられたときに動いていたETWロガーを表示します。
この時、保存したいログのIdを確認します。
今回は”NT Kernel Logger”を保存する場合を考えるので、Idは”0x00” になります。
!wmitrace.strdump

2. !wmitrace.logsave と1で取得したIdを利用して、メモリ上のETWログを保存します。
コマンドの構文は以下になります。
  !wmitrace.logsave <保存するファイルのパス。拡張子はetl>
  例: !wmitrace.logsave 0x00 c:\Data\Kernel.etl
!wmitrace.logsave

3. 2で指定したパスに、etlファイルが出来上がります。
etlファイル

4. 2で保存したETWログファイルをwpa(=Windows Performance Analyzer) かxperfviewで開きます。
   *wpaもxperfviewもWindows Performance Toolkitに入っています。Windows Performance ToolkitはSDKに入っています。
以下は、CPU Usageをwpaで確認しているところです。
110-4

【補足】
a). プライベートシンボル(= 一般非公開のシンボル) がないと見れないログもあります。
以下は、上記の手順で保存したAudioのログです。
プライベートシンボルがないので、GUIDになっていることがわかります。
GUIDになることもある

b). 関数名の表示もできません。
たとえシンボルの設定が正しくても、関数名の表示はできません。
ダンプからETWログを取得したために、必要なメタデータがないためです。
関数名の表示もできない

リンク
・Defrag Tools: #29 - WinDbg - ETW Logging (英語)
http://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-29-WinDbg-ETW-Logging


  1. 2013/05/02(木) 21:49:43|
  2. WinDbg
  3. | トラックバック:0
  4. | コメント:0
<<TCP Retransmit・DupACK・Fast Retransmit ~トラブルシューティング時のキーワード~ | ホーム | Visual Studioの役に立つショートカット -コードエディター編>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/110-4a97987f
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する