[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]] -[[戻る>障害発生時の分析]] * 目次 [#ra83b548] #contents *概要 [#l5ed78f3] *解析 [#rb6c74ff] ダンプの取得・参照 ---> 解析により問題を特定できる可能性がある。 -ソースコード提供がないミドルウェア、ツール類で問題が発生している場合 -または、デバッガの使用できない本番環境で問題が発生した場合 **限界 [#yfdd53a5] -ダンプでは解析可能な範囲は限られるため、~ デバッガを使える開発・検証環境ではデバッガを使用する。 >例えば、任意のプロセスにVSデバッガを手動でアタッチすることもできるし、~ 下記の方法でプロセス起動時にVSデバッガを自動的にアタッチすることもできる。 -デバッガをインストールできない本番環境ではダンプに頼る。~ PDB(シンボル)やソースコードもあればなお良い。~ --実行中のプロセスへのアタッチ~ http://msdn.microsoft.com/ja-jp/library/3s68z0b3.aspx --方法 デバッガを自動的に起動する~ http://msdn.microsoft.com/ja-jp/library/a329t4ed.aspx~ >アプリケーションの起動時にデバッガを起動して自動的にアタッチ) *種類 [#vbf88eec] **モード [#l341a423] ***[[カーネル・ダンプ]] [#e1a4d73c] ***[[ユーザモード・プロセス・ダンプ]] [#ob6bd906] **取得タイミング [#l97fb253] -([[ユーザモード・プロセス・ダンプ]]の)取得タイミング -[[カーネル・ダンプ]]は[[クラッシュ・ダンプ]]に近い。 ***[[クラッシュ・ダンプ]] [#n38653be] クラッシュ時にプロセスにデバッガをアタッチしてダンプを取得する。 問題が起きた時刻に近い情報(メモリ&スタック)を取得可能であるが、~ 上記に問題の情報が含まれないケースや、マルチスレッド環境化などで、~ 重要な情報をタイミングによって取り逃がしているケースはあり得る。 ***ハング・ダンプ [#l03764db] ハングしている状態のプロセスにデバッガをアタッチしてダンプを取得する。 ハングしているスレッドのスタックを見ることで~ ハングを起こしているプログラムコードの部位の特定が比較的容易。 **サイズ [#m0383434] ([[ユーザモード・プロセス・ダンプ]]の)フルダンプとミニダンプ ***フルダンプ [#la535140] -プロセスの全仮想アドレス空間のダンプ -サポートされなくなりつつある。 ***ミニダンプ [#d7f9e8b4] 細かい制御が可能で、また、フルダンプより多くの情報が含まれる。 取得可能な情報と、その制御方法については、以下を参照 -MINIDUMP_TYPE enumeration~ http://msdn.microsoft.com/en-us/library/windows/desktop/ms680519.aspx~ >UMPDや、WERで、使用できたりできなかったりする。 *取得 [#gdd1e51b] **注意点 [#yc288f5c] セキュリティを考慮し、ダンプ出力先はadministratorなどのユーザのみが参照できる位置とすること。 **[[カーネル・ダンプ]] [#jb5f0c97] **[[ユーザモード・プロセス・ダンプ]] [#w2d63843] *参照方法 [#z7352220] **[[カーネル・ダンプ]] [#b7d6a6f1] **[[ユーザモード・プロセス・ダンプ]] [#sf22d9e3]