troushoo

Windows 10 SDK のWinDbg からの新コマンド dx


概要

Windows 10 SDK のWinDbg からの新コマンド dx を紹介します。
クリックだけでプロセス一覧やスレッドのコールスタックがわかったり、LINQ クエリを実行し必要な情報のみを表示させるたりすることが可能です。

内容

以下dx の使用例を紹介します。
dx コマンドはユーザーモード、カーネルモードどちらにも使えますが、以下の例では、カーネルモードを用いています。

dx をクリックで利用する方法
1. 「dx Debugger」を実行します。
クリック可能なハイパーリンクが表示されます。


2. 「Sessions」をクリックしてみます。
ダンプファイルの情報がわかります。


3. 唯一のセッション「0x0」クリック後、「Processes」をクリックしてみます。
ダンプ採取時に実行していたプロセス一覧が表示されます。


4.  プロセスID → 「Threads」→スレッドID →「Stack」→「Frames」とクリックしていくことで、スレッドのコールスタックも表示されます。


dx をLINQ クエリで利用する方法
LINQ とは、SQL 文のようなもので、データを検索したりフィルターしたりできます。

1. LINQ クエリを入力する際「Tab キー」をクリックすることで、候補を表示してくれます。
例えば、「dx –r Debugger.」と入力し「Tab キー」を入力する場合を考えます。


「Debugger.」配下には「Sessions」「Settings」「State」「Utility」があります。
その中の一つ「Sessions」が補完され「dx –r Debugger.Sessions」と補完されます。


もう一度「Tab キー」を入力すると「dx –r Debugger.Settings」となります。


2. 以下のLINQ クエリを実行してみます。
すると、ダンプ採取時に実行していたプロセス名、並びにスレッド数一覧が、プロセス名にてソートされ表示されます。

dx -r2 Debugger.Sessions.First().Processes.Select(p => new {Name = p.Name, ThreadCount = p.Threads.Count() }).OrderByDescending(p => p.Name)


3. 「-g」をつけると表形式で結果が表示されます。


この表は、「-g」をつけずに実行した際に作成されるLINQ クエリのハイパーリンクを右クリックし「Display As Grid」を実行しても表示されます。


4. 一番上の列をクリックすると、ソートすることも可能です。



*dx で利用できるLINQ クエリ一覧は、マイクロソフトのサイトにて確認できます。

補足

今回用いたWinDbg は、Windows 10 SDK Preview Build 10563 Released からダウンロードしています。


Windows 10 用 Windowd ソフトウェア開発キット からダウンロードできるWinDbg では、上記で紹介した「Processes」 や「Display As Grid」が使用できませんでした。


情報元
Defrag Tools #139 - Debugging - 'dx' Command Part 2 (英語)
dx (Display NatVis Expression) (英語)

関連記事
NetExt : Microsoft のRodney Viana 氏作の.NET 用WinDbg エクステンション


  1. 2015/11/08(日) 22:25:35|
  2. WinDbg
  3. | トラックバック:0
  4. | コメント:0
<<PerfView を用いて.NET アプリのメモリリークの調査 | ホーム | Visual Studio 2015 の新機能 : ウィンドウ レイアウトの保存>>

コメント

コメントの投稿


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

トラックバック

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

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

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

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

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