クラッシュダンプあれこれ

全部未検証だから後で調べること。

ワトソンログ、クラッシュダンプ(user.dmp)が出力される場所
win2000
Documents and Settings\All Users\Documents\DrWatson

winXP
Documents and Settings\All Users\Application Data\Microsoft\Dr Watson

win2003
Documents and Settings\< ユーザー名 >\Local Settings\Application Data\Microsoft\Dr Watson
Documents and Settings\< ユーザー名 >\NetworkService\Application Data\Microsoft\Dr Watson

sp1を適用していないwin2003ではuser.dmpとワトソンログがちゃんと作成されない
http://support.microsoft.com/kb/836080/ja

MSへエラー報告とクラッシュダンプについて
win2003だけ?xpもか?
msへのエラー報告が有効になっている場合(win2003デフォルトでは有効)ワトソンログ、user.dmpは出力されず、
c:\WINDOWS\PCHEALTH\ErrorRep\UserDumps
に*.hdmpというダンプファイルのみ作成される。
hdmpにどこまで情報が落ちているのかは要調査。

win2003でエラー報告を無効にして、ワトソンログが出力されるようにする手順
マイコンピュータのプロパティ→詳細→エラー報告
「エラー報告を無効にする」を選択し、「重大なエラーが発生した場合には通知する」チェックもはずす。

drwtsn32.exe –p [PID]でプロセスIDを指定してダンプを吐かせることも可能。

ワトソン博士のインストール
win2000、winXPではdrwtsn32 -iでワトソン博士を規定のデバッガに設定することでプログラム以上終了時にクラッシュダンプが自動的に出力されるようになる。が、規定のデバッガにしちゃっていいのかな?VSおか入ってたらどうなるんやろ。

VISTAではタスクマネジャのプロセス一覧からダンプを出力できる。
プログラムエラーのダイアログが出力されている状態でタスクマネジャのプロセスを右クリック→ダンプファイルの作成。
ワトソンはない。

.NETアプリが出力するクラッシュダンプにスタック情報を記録する
%SystemRoot%\Microsoft.NET\Framework\vx.x.xxx\CONFIG\machine.config
開き、system.windows.formsセクションのjitDebuggingの値をtrueにする。

レジストリHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFrameworkキーのDbgJITDebugLaunchSettingの値を0にする。