Skip to content

MS_HangDump

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

ハング・ダンプ

概要

  • ハングしている状態のプロセスにデバッガをアタッチしてダンプを取得する。
  • ハングしているスレッドのスタックを見ることで、
    ハングを起こしているプログラムコードの部位の特定が可能。
  • しかし、クラッシュ・ダンプと違って、
    アナライザ任せにできない場合もあり、難易度は若干、高い。

※ クラッシュ・ダンプは「落ちたスレッド」が自明だが、
ハング・ダンプはどのスレッドが原因かを全スレッドのスタックから読み解く必要がある。
デッドロックの切り分けには時間をずらして2〜3回取得し、
スタックが変化しないスレッドを探すのが定石。

ツール

OSや対象プロセス(マネージド、アンマネージド)によって
使用するツール・手順・設定等が異なるのでサポートと連携して行う。

以下は、ハング・ダンプの専用ツール。
クラッシュ・ダンプと併用可能なツールはダンプ取得に使用するツールの一覧を参照。

Vista, Win7以降

タスクマネージャ

  • Vista, Win7以降ではタスクマネージャから任意のタイミングでメモリダンプを取得できる。
  • タスクマネージャのプロセス一覧からプロセスを選択し右クリック →「ダンプ ファイルの作成」

※ 取得できるダンプは「フルダンプ」でファイルのパスは固定となる(AppData\Local\Temp 以下)。

※ 64bit OS 上の 32bit プロセスを 64bit タスクマネージャからダンプすると、
マネージド スタックが読めないダンプになることがある。
その場合は 32bit 版のツール(C:\Windows\SysWOW64\taskmgr.exe ではなく
32bit の ProcDump / WinDbg)を使う。WOW64 を参照。

Process Explorer

Sysinternals の Process Explorer

  • Process Explorerのプロセス一覧からプロセスを選択し右クリック、
  • 「Create Dump」から「Mini Dump」か「Full Dump」かを選択的に取得できる。
  • また、ダンプ・ファイル名と保存場所を指定できる。

ProcDump

ProcDump

コマンドラインから条件付き・複数回のダンプ取得ができるため、
ハング調査では実務上こちらが便利。

procdump -ma <PID>              フルダンプを1回
procdump -ma -n 3 -s 10 <PID>   10秒間隔で3回
procdump -ma -h <PID>           ウィンドウがハング状態になったら取得

Win10以降

Win7 から、特に変更はなさそう。

参考


Tags: 障害対応, デバッグ

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally