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

目次

概要

クラッシュ時にプロセスに事後分析デバッガをアタッチしてダンプを取得する。

問題が起きた時刻に近い情報(メモリ&スタック)を取得可能であるが、
上記に問題の情報が含まれないケースや、マルチスレッド環境化などで、
重要な情報をタイミングによって取り逃がしているケースはあり得る。

使用可能なツール

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

OS標準

ワトソン博士、ワトソンログ

WER(Windows Error Report)

ワトソン博士の後継で、Vista以降のOS、クラッシュダンプ以外も取得可能。

にレポートとして表示される。

その他

取得方法

未処理例外のディスパッチ

未処理例外=セカンドチャンス(ラストチャンス)例外

ファーストチャンス例外

無害な(ハンドリングされた例外

ダンプ取得できないマネージ例外

.NETのランタイム(mccorwks.dll内部)でAccess Violation等の例外が発生した場合、.NETでは、ユーザアプリケーションでは例外をハンドルできない仕様となっている。この場合、ファーストチャンス例外発生後に、イベントログを出力しプロセスを終了するので、セカンドチャンス例外が発生せず、クラッシュダンプをデバッガから取得できない。このため、このようなケースではファーストチャンス例外の監視機能を持つUMPDADPlusなどのダンプ取得ツールを使用してクラッシュダンプを取得する。

事後分析デバッガのインストール方法と設定方法

ワトソン博士

UMPD

WinDbg

CDB

NTSD

VisualStudio? 2010 以降

.NET Framework 4 以降

VisualStudio? 2010 以前

設定場所と値が異なるが割愛

.NET Framework 3.5 以前

設定場所と値が異なるが割愛

その他の取得方法

UnhandledExceptionFilter?関数

プログラムはクラッシュさせずに自前の未処理例外フィルタを実行することもできる。また、ここでセルフダンプの取得を行う事もできる。  

メモリリーク用

グローバルフラグ

また、グローバルフラグを使用して

を有効にする必要がある。

ページ ヒープをオンにした場合、ヒープオーバーランの検出も可能になる。
※ ヒープに対するバッファオーバーランをヒープオーバーランと呼ぶ。

ページ ヒープ、ユーザモード スタックトレース データベースはメモリを使用するため、調査後には無効にする。

Global Flags Editor

これには、Global Flags Editor (Gflags.exe) ユーティリティを使用する。

(Debugging Tools for Windowsに同梱されている)

CUI

GUI

ImageFile?タブから、対象イメージの

を有効・無効にする。

参考


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS