Home > Tech > [Windbg 第5回] ユーザメモリ空間のダンプを取得する。

[Windbg 第5回] ユーザメモリ空間のダンプを取得する。

December 2nd, 2009

こんにちわgattsです。

今回は前回の続きを書こうと思います。

ユーザメモリ空間のダンプとは?

ダンプファイルにはもうひとつユーザ空間で動作しているプロセスのダンプが存在します。これをユーザダンプといいます。

具体的にプロセスの例を挙げるならばWORD.EXEやEXCEL.EXEにあたります。利用しているプログラム(Word,Excel)が固まってしまったり強制終了した場合の調査に有効です。

カーネルのダンプと同様にユーザダンプにも取得方法が2通りあります。

  1. 自分がダンプファイルをほしいと思った時に実施するコマンド操作による手動取得方式。
  2. プロセスが強制終了したタイミングで自動的に取得する方式。

手動取得方法

手動による取得は主にプロセスのハング状態を調査するときに利用します。

みなさんもパソコンを利用しているときに応答無しと表示されてお怒りになられることが多いでしょう。

この状態でダンプを取得することでこのまま処理がループしてプロセスがデットロックするのかはたまた時間が立つと開放されるのかその後のシナリオがわかる分けです。

20091111_0_windbg

コマンドはとてもシンプルです。User Mode Process Dumperをインストールしていれば

コマンド一行で済みます。

userdump <プロセス名(例、iexplore.exe)> <ダンプファイル作成のパス(例、c:\test.dmp)>

(例、userdump iexplorer.exe c:\test.dmp)

userdump <プロセスID(例、5513)> <ダンプファイル作成のパス(例、c:\test.dmp)>

(例、userdump 5513 c:\test.dmp)

イメージはつきますか。

コマンドを実行するとc:\test.dmp が作成されると思います。

自動取得方法

自動による取得は主にプロセスのクラッシュを調査するときに利用します。

みなさんはパソコンを利用されている時に”例外エラー”表示や画面が突然消滅した経験はありませんか?

このような現象をクラッシュといいます。

クラッシュ状態をダンプとして保存する場合は、ハング状態と違ってあらかじめクラッシュすることを想定して準備しておく必要があります。例えるなら準備した罠に魚をおびき寄せる準備をする仕掛け漁のようなものです。”パソコンを起動した後にWordを立ち上げると5分後に必ず強制終了してしまう”などと現象がわかっていると簡単にダンプが取得できます。要は強制終了するまえに準備をしてしまえば良いのです。

まずは、インストール時に停止したサービスを起動させます。

スタート→マイコンピュータ→右クリック→管理(G)でMMCを起動します。

コンピュータの管理でサービスとアプリケーション→サービスを選択します。

20091111_1_windbg

User mode Process Dumperを開始します。

20091111_2_windbg

サービス起動後にC:\kktools\userdump8.1\x86に格納されているuserdump.cplをダブルクリックしてコントロールパネルを起動します。

20091111_4_windbg

この画面中にあるNewボタンをクリックしてクラッシュする予定のプロセスをターゲットとして登録します。

以下の画像はエクセルをターゲットに設定する例です。

20091111_5_windbg

OKボタンを押した後に設定された項目をダブルクリックするとダンプ取得のカスタムルールを設定可能です。通常はUse default rulesになっています。

20091111_6_windbg

すべての項目は検証しきれていませんが以下の通りです。

Dump file folder:ダンプを保存するフォルダを指定します。

MiniDump Type:ダンプの種類を選択します。完全か最小を選択可能です。

Exit Monitor:ここにチェックを入れるとプログラムのウィンドウを×ボタンで閉じた時もダンプを取得するように設定可能です。

みなさんも使ってみてください。ダンプは取得できましたか。

ダンプ取得後はサービス停止をお忘れなく。。。

サービス停止をしないとダンプを取得しまくりますので要注意です。

Categories: Tech Tags: , , ,
Comments are closed.
Theme by NeoEase. Valid XHTML 1.1 and CSS 3.