WindowsのMemory.dmpで強制ダンプを取得した際
そのOSが本当にハングアップしていたかどのように
判断すればよいでしょうか。
プロセスダンプであれば複数回取得して、スタックなど
の処理が進んでいるか見ればいいと思うのですが。
最近ハングアップ時のMemory.dmpを貰うのですが
本当にOSが動かなかった状態で取得したのか、ヒアリングしても
はっきりせずあまり信用ができません。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
マイクロソフトのデバッグツールを使って判断が良いのでは?
WDK、WinDbg、関連ツールのダウンロード
これをインストールします。(各Windows毎にあります)
’スタートメニューの[すべてのプログラム]-[Windows Kits]-[Debugging Tools for Windows(x86)]-[WinDbg(x86)]を起動します。’(x86の例)
ファイルメニューから'memory.dmp'を読み込むと様々な情報がでますので。
詳しくはツールのヘルプなどで確認して下さい。
投稿2016/11/08 13:09
編集2016/11/08 13:59総合スコア3747
0
システム ハングは大抵の場合、複数のスレッドが関連して起こします。
そしてそのハング現象に関連するスレッドは、複数のプロセスにまたがっていることが多々あります。
もちろん単体のプロセスで起きることもありますが、私が経験した限りでは、複数のプロセスでのスレッド間でのデッドロックが一番多いです。
このためハング現象をダンプ解析から調査する場合は、現象発生時の完全メモリ ダンプを採取されることをお勧めします。
ハング時のダンプ採取はターゲット システムの H/W にも依存しますが、一般的にはキーボード クラッシュが一番手っ取り早いと思います。
("Windows", "完全メモリ ダンプ", "キーボード クラッシュ" でググれば、設定および採取方法の手順が色々と出てきます。)
完全メモリ ダンプが採取できたら WinDBG (あるいは Visual Studio 2015 とかでもいけど) でダンプ ファイルを開きます。
で、とりあえず "!analyze -hung" コマンド実行して、ERESOURCE の Lock でハングが起きているのかを確認します。
ここで排他アクセスの Lock が検出された場合、"!locks" コマンドで該当スレッド (必ず2つ以上のスレッドが存在するはず) の関係を調べ、"!thread" コマンドでそれぞれのスレッド状態の詳細を確認します。
"!analyze -hung" コマンドでそれらし問題が検出されなかった場合は、"!cpuinfo" コマンドで CPU の数をチェックし、"~<CPU No.>" コマンドと "!thread" コマンドで、各 CPU 上で実行中のスレッドの状態を確認します。
このとき、"!thread" コマンド出力での "UserTime", "KernelTime", "Ticks" のいずれかの値が際立って高ければ、そのスレッドが影響している可能性が高いので、LPC (Local Procedure Call) 等が関連していないか確認します。
上記2つの調査でもそれらしい問題点が見つからない場合は、"!process 0 1f" コマンドで全スレッドの詳細情報を確認します。
なおこのコマンドの実行はとても時間がかかり出力行数もとても長いので、あらかじめ ".logopen" コマンドでファイル出力させる設定を行っておくことをお勧めします。
全スレッドの詳細情報が取得できたら、先と同じように、"UserTime", "KernelTime", "Ticks" のいずれかの値が際立って高いスレッドが存在していいないか、確認していきます。
それでも見つからない場合は。。。ケース バイ ケースになってしまうので、実際にそのダンプが手元にないと説明できません。
とにかくハング現象のダンプ解析は BSOD のダンプ解析に比べ、「格段に」面倒です。
(でも場数を踏むと、段々楽しくなる!!)
なので、可能であるなら WPA (Windows Performance Analyzer) 等のツールを使った調査を検討されることをお勧めします。
投稿2016/11/10 07:23
総合スコア69
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Memory.dmp を WinDbg 使って解析しましょう。
詳細な解析には様々な知識が必要になりますが、とりあえず「!analyze -v-hang」コマンドを実行すれば、よくあるハングアップパターンなら自動解析しハングアップの原因を表示してくれます。
投稿2016/11/08 13:47
総合スコア344
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。