クラッシュ・ダンプ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>ダンプの概要(種類と取得)]]
* 目次 [#k33cf768]
#contents
*概要 [#u6bd2f21]
-クラッシュ時にプロセスに事後分析デバッガをアタッチしてダ...
-問題が起きた時刻に近い情報(メモリ&スタック)を取得可能...
上記に問題の情報が含まれないケースや、マルチスレッド環境...
重要な情報をタイミングによって取り逃がしているケースはあ...
-クラッシュしたスレッドのスタックを見ることで、~
クラッシュを起こしているプログラムコードの部位の特定が比...
*使用可能なツール [#a7ded6cc]
OSや対象プロセス(マネージド、アンマネージド)によって~
使用するツール・手順・設定等が異なるのでサポートと連携し...
以下は、[[クラッシュ・ダンプ]]の専用ツール。
[[ハング・ダンプ]]と併用可能なツールは[[こちら>ダンプの概...
**OS標準 [#k89113b1]
-以下のツールを使用できる。
-ただし、マネージド・プロセスの[[クラッシュ・ダンプ]]は取...
この場合は、ADPlus(か、cdb.exe単独実行)を利用する。
***ワトソン博士、ワトソンログ [#f8ccf70d]
-Windows OS標準のデバッガでクラッシュ・ダンプ・ファイルを...
-ファイル名を指定して実行:「drwtsn32」でワトソン博士の設...
--Windows のワトソン博士を有効または無効にする方法~
http://support.microsoft.com/kb/188296/ja
-ただし、Vista以降のOSでは使用できない。
--Windows Vista では、完全なユーザー モードのダンプ ファ...
http://support.microsoft.com/kb/951018/ja
--Windows Vista でユーザーモード プロセスのダンプ ファイ...
http://support.microsoft.com/kb/931673
--Windows Server 2008 でユーザー モード プロセス ダンプを...
http://support.microsoft.com/kb/949180/ja
***[[WER(Windows Error Report)]] [#gd2a0752]
**その他 [#d4468c5c]
***[[UMPD]] [#i69b04fe]
***[[WinDbg]] [#a3262b90]
***[[ADPlus]] [#tc12ff72]
***CDB [#o6ad9d08]
***NTSD [#y185976f]
***[[ProcDump]] [#z7322665]
***マネージド・コードの場合 [#b44e916d]
[[UMPD]]、WinDbg、CDB、NTSDのオプション指定により~
CLRの例外発生時のマネージコードのクラッシュダンプ取得も可...
***参考 [#j670022d]
-技術/Windows/メモリダンプ取得方法メモ~
http://www.glamenv-septzen.net/view/918
*取得方法 [#oaaa3d07]
**未処理例外のディスパッチ [#zfec06e1]
未処理例外=セカンドチャンス(ラストチャンス)例外
-通常は無害な(ハンドリングされた)ファーストチャンス例外...
-セカンドチャンス(ラストチャンス)例外の通知により、~
事後分析デバッガ(ダンプツール)をアタッチしてダンプを出...
***ファーストチャンス例外 [#vd71c433]
無害な(ハンドリングされた)例外
***ダンプ取得できないマネージ例外 [#iffa2486]
-.NETのランタイム(mccorwks.dll内部)でAccess Violation等...
.NETでは、ユーザアプリケーションでは例外をハンドルできな...
-この場合、ファーストチャンス例外発生後に、イベントログを...
セカンドチャンス例外が発生せず、クラッシュダンプをデバッ...
-このため、このようなケースではファーストチャンス例外の監...
[[UMPD]]や[[ADPlus]]などのダンプ取得ツールを使用してクラ...
**事後分析デバッガのインストール方法と設定方法 [#e1100caf]
-デフォルトのデハッガのレジストリ登録位置は以下。
-アンマネージド、.NET Framework 4 以降
--キー~
HKEY_LOCAL_MACHINE\Software
---\Microsoft\Windows NT\CurrentVersion\AeDebug
---\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
--エントリ
---Auto値:1
---Debugger値:ツール・動作により可変(下記参照)
-.NET Framework 2 - 3.x
--キー~
HKEY_LOCAL_MACHINE\Software
---\Microsoft\.NETFramework\
---\Wow6432Node\Microsoft\.NETFramework\
--エントリ
---DbgJITDebugLaunchSetting値:2 or 16
---DbgManagedDebugger値:ツール・動作により可変(下記参照)
***ワトソン博士 [#u8911f61]
-インストール方法:drwtsn32 -i
-Debugger値
--デバッグ:-(ダンプ専用)
--ダンプ:drwtsn32 -p %ld -e %ld -g
***[[UMPD>#b9b21ed7]] [#bf234739]
***WinDbg [#f26deaed]
-インストール方法:WinDbg -I
-Debugger値
--デバッグ時:windbg.exe -p %ld -e %ld -g
--ダンプ時:windbg.exe -p %ld -e %ld -g -c '.dump /o /ma ...
***CDB [#xc4deb41]
-インストール方法:cdb -iae
-Debugger値
--デバッグ時:cdb.exe -p %ld -e %ld -g
--ダンプ時:cdb.exe -p %ld -e %ld -g -c ".dump /o /ma /u ...
***NTSD [#jf1a22d0]
-インストール方法:ntsd -iae
-Debugger値
--デバッグ時:ntsd.exe -p %ld -e %ld -g
--ダンプ時:ntsd.exe -p %ld -e %ld -g -c ".dump /o /ma /u...
***[[ProcDump>ProcDump#kd0c7198]] [#r238e5ca]
***VisualStudio 2010 以降 [#oa746aec]
-インストール方法:-
-Debugger値
--デバッグ時:Debugger=vsjitdebugger.exe" -p %ld -e %ld
--ダンプ時:-
***.NET Framework 4 以降 [#x078bb09]
-インストール方法:-
-Debugger値
--デバッグ時:Debugger=cordbg.exe" !a 0x%x
--ダンプ時:-
***VisualStudio 2010 以前 [#r72282db]
設定場所と値が異なるが割愛
-キー:HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramewor...
--エントリ
---DebugLaunchSetting
***.NET Framework 3.5 以前 [#w6b8ebdf]
設定場所と値が異なるが割愛
-キー:HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramewor...
--エントリ
---DebugLaunchSetting
***その他の設定 [#j342abfa]
-[[Windows Forms]]
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
-WREの設定~
必要に応じて行う。
--キー~
HKEY_LOCAL_MACHINE\Software
---\Microsoft\Windows\Windows Error Reporting
---\WOW6432Node\Microsoft\Windows\Windows Error Reporting
--エントリ~
既定値:なし→1(無効の意)
*その他の取得方法 [#ece7161e]
**UnhandledExceptionFilter関数 [#w7d8cfcf]
プログラムはクラッシュさせずに自前の未処理例外フィルタを...
-UnhandledExceptionFilter 関数~
http://msdn.microsoft.com/ja-jp/library/cc429058.aspx
-構造化例外処理と UnhandledExceptionFilter | Web-DB プロ...
http://keicode.com/windows/windows_exception_handling.php
*メモリリーク用 [#r3dcbb2e]
-通常、[[ユーザモード・プロセス・ダンプ]]の[[ハング・ダン...
-[[メモリ・リーク]]に起因するOutOfMemory等で異常終了する...
**グローバルフラグ [#g2aa5c94]
また、グローバルフラグを設定して
-ヒープリーク検出機能(ページ ヒープ)~
→ !Heap -p -a コマンドコマンドでstacktraceを出力可能にす...
-ユーザモード スタックトレース データベース~
→ !Heap -a コマンドでstacktraceを出力可能にする(オプシ...
を有効にする必要がある。
ページ ヒープをオンにした場合、ヒープオーバーランの検出も...
※ ヒープに対するバッファオーバーランをヒープオーバーラン...
-ページヒープ (PageHeap) によるヒープオーバーランの検出 -...
http://keicode.com/debug/dbg-pageheap.php
ページ ヒープ、ユーザモード スタックトレース データベース...
***Global Flags Editor [#u9810f49]
グローバルフラグの設定には、~
Global Flags Editor (Gflags.exe) ユーティリティを使用する。
(Debugging Tools for Windowsに同梱されている)
-CUI
--有効化:gflags -i <実行ファイル名> +ust +hpa
--無効化:gflags -i <実行ファイル名> -ust -hpa
-GUI~
ImageFileタブから、対象イメージの
--enable page heapチェックボックス
--create user mode stack trace databaseチェックボックス
>を有効・無効にする。
*参考 [#ee2d38b0]
-例外 - Web-DB プログラミング徹底解説~
http://keicode.com/debug/dbg320.php
-致命的な例外エラーについて~
http://support.microsoft.com/kb/150314/ja~
プロセッサ例外とその定義
--00 : Divide Fault (除算違反)
--02 : NMI Interrupt (NMI 割り込み)
--04 : Overflow Trap (オーバーフロー トラップ)
--05 : Bounds Check Fault (境界チェック違反)
--06 : Invalid Opcode Fault (無効なオペコード違反)
--07 : Coprocessor Not Available Fault (コプロセッサ利用...
--08 : Double Fault (ダブル フォールト)
--09 : Coprocessor Segment Overrun (コプロセッサ セグメン...
--10 (0Ah) : Invalid Task State Segment Fault (無効なタス...
--11 (0Bh) : Not Present Fault (不在違反)
--12 (0Ch) : Stack Fault (スタック違反)
--13 (0Dh) : General Protection Fault (一般保護違反)
--14 (0Eh) : Page Fault (ページ違反)
--16 (10h) : Coprocessor Error Fault (コプロセッサ エラー)
--17 (11h): Alignment Check Fault (アライメント チェック...
-事後分析デバッガのアタッチ
--sdk32 システムが起動するデバッガの選択~
http://support.microsoft.com/kb/103861/ja
--JIT アタッチ デバッグの有効化~
http://msdn.microsoft.com/ja-jp/library/2ac5yxx6.aspx
--@IT:.NET TIPS [アプリケーション・エラー]ダイアログ...
http://www.atmarkit.co.jp/fdotnet/dotnettips/262apperror/...
-Just-in-time デバッガーを使用してデバッグする - Visual S...
https://docs.microsoft.com/ja-jp/visualstudio/debugger/de...
----
Tags: [[:障害対応]], [[:性能]], [[:デバッグ]]
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>ダンプの概要(種類と取得)]]
* 目次 [#k33cf768]
#contents
*概要 [#u6bd2f21]
-クラッシュ時にプロセスに事後分析デバッガをアタッチしてダ...
-問題が起きた時刻に近い情報(メモリ&スタック)を取得可能...
上記に問題の情報が含まれないケースや、マルチスレッド環境...
重要な情報をタイミングによって取り逃がしているケースはあ...
-クラッシュしたスレッドのスタックを見ることで、~
クラッシュを起こしているプログラムコードの部位の特定が比...
*使用可能なツール [#a7ded6cc]
OSや対象プロセス(マネージド、アンマネージド)によって~
使用するツール・手順・設定等が異なるのでサポートと連携し...
以下は、[[クラッシュ・ダンプ]]の専用ツール。
[[ハング・ダンプ]]と併用可能なツールは[[こちら>ダンプの概...
**OS標準 [#k89113b1]
-以下のツールを使用できる。
-ただし、マネージド・プロセスの[[クラッシュ・ダンプ]]は取...
この場合は、ADPlus(か、cdb.exe単独実行)を利用する。
***ワトソン博士、ワトソンログ [#f8ccf70d]
-Windows OS標準のデバッガでクラッシュ・ダンプ・ファイルを...
-ファイル名を指定して実行:「drwtsn32」でワトソン博士の設...
--Windows のワトソン博士を有効または無効にする方法~
http://support.microsoft.com/kb/188296/ja
-ただし、Vista以降のOSでは使用できない。
--Windows Vista では、完全なユーザー モードのダンプ ファ...
http://support.microsoft.com/kb/951018/ja
--Windows Vista でユーザーモード プロセスのダンプ ファイ...
http://support.microsoft.com/kb/931673
--Windows Server 2008 でユーザー モード プロセス ダンプを...
http://support.microsoft.com/kb/949180/ja
***[[WER(Windows Error Report)]] [#gd2a0752]
**その他 [#d4468c5c]
***[[UMPD]] [#i69b04fe]
***[[WinDbg]] [#a3262b90]
***[[ADPlus]] [#tc12ff72]
***CDB [#o6ad9d08]
***NTSD [#y185976f]
***[[ProcDump]] [#z7322665]
***マネージド・コードの場合 [#b44e916d]
[[UMPD]]、WinDbg、CDB、NTSDのオプション指定により~
CLRの例外発生時のマネージコードのクラッシュダンプ取得も可...
***参考 [#j670022d]
-技術/Windows/メモリダンプ取得方法メモ~
http://www.glamenv-septzen.net/view/918
*取得方法 [#oaaa3d07]
**未処理例外のディスパッチ [#zfec06e1]
未処理例外=セカンドチャンス(ラストチャンス)例外
-通常は無害な(ハンドリングされた)ファーストチャンス例外...
-セカンドチャンス(ラストチャンス)例外の通知により、~
事後分析デバッガ(ダンプツール)をアタッチしてダンプを出...
***ファーストチャンス例外 [#vd71c433]
無害な(ハンドリングされた)例外
***ダンプ取得できないマネージ例外 [#iffa2486]
-.NETのランタイム(mccorwks.dll内部)でAccess Violation等...
.NETでは、ユーザアプリケーションでは例外をハンドルできな...
-この場合、ファーストチャンス例外発生後に、イベントログを...
セカンドチャンス例外が発生せず、クラッシュダンプをデバッ...
-このため、このようなケースではファーストチャンス例外の監...
[[UMPD]]や[[ADPlus]]などのダンプ取得ツールを使用してクラ...
**事後分析デバッガのインストール方法と設定方法 [#e1100caf]
-デフォルトのデハッガのレジストリ登録位置は以下。
-アンマネージド、.NET Framework 4 以降
--キー~
HKEY_LOCAL_MACHINE\Software
---\Microsoft\Windows NT\CurrentVersion\AeDebug
---\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
--エントリ
---Auto値:1
---Debugger値:ツール・動作により可変(下記参照)
-.NET Framework 2 - 3.x
--キー~
HKEY_LOCAL_MACHINE\Software
---\Microsoft\.NETFramework\
---\Wow6432Node\Microsoft\.NETFramework\
--エントリ
---DbgJITDebugLaunchSetting値:2 or 16
---DbgManagedDebugger値:ツール・動作により可変(下記参照)
***ワトソン博士 [#u8911f61]
-インストール方法:drwtsn32 -i
-Debugger値
--デバッグ:-(ダンプ専用)
--ダンプ:drwtsn32 -p %ld -e %ld -g
***[[UMPD>#b9b21ed7]] [#bf234739]
***WinDbg [#f26deaed]
-インストール方法:WinDbg -I
-Debugger値
--デバッグ時:windbg.exe -p %ld -e %ld -g
--ダンプ時:windbg.exe -p %ld -e %ld -g -c '.dump /o /ma ...
***CDB [#xc4deb41]
-インストール方法:cdb -iae
-Debugger値
--デバッグ時:cdb.exe -p %ld -e %ld -g
--ダンプ時:cdb.exe -p %ld -e %ld -g -c ".dump /o /ma /u ...
***NTSD [#jf1a22d0]
-インストール方法:ntsd -iae
-Debugger値
--デバッグ時:ntsd.exe -p %ld -e %ld -g
--ダンプ時:ntsd.exe -p %ld -e %ld -g -c ".dump /o /ma /u...
***[[ProcDump>ProcDump#kd0c7198]] [#r238e5ca]
***VisualStudio 2010 以降 [#oa746aec]
-インストール方法:-
-Debugger値
--デバッグ時:Debugger=vsjitdebugger.exe" -p %ld -e %ld
--ダンプ時:-
***.NET Framework 4 以降 [#x078bb09]
-インストール方法:-
-Debugger値
--デバッグ時:Debugger=cordbg.exe" !a 0x%x
--ダンプ時:-
***VisualStudio 2010 以前 [#r72282db]
設定場所と値が異なるが割愛
-キー:HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramewor...
--エントリ
---DebugLaunchSetting
***.NET Framework 3.5 以前 [#w6b8ebdf]
設定場所と値が異なるが割愛
-キー:HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramewor...
--エントリ
---DebugLaunchSetting
***その他の設定 [#j342abfa]
-[[Windows Forms]]
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
-WREの設定~
必要に応じて行う。
--キー~
HKEY_LOCAL_MACHINE\Software
---\Microsoft\Windows\Windows Error Reporting
---\WOW6432Node\Microsoft\Windows\Windows Error Reporting
--エントリ~
既定値:なし→1(無効の意)
*その他の取得方法 [#ece7161e]
**UnhandledExceptionFilter関数 [#w7d8cfcf]
プログラムはクラッシュさせずに自前の未処理例外フィルタを...
-UnhandledExceptionFilter 関数~
http://msdn.microsoft.com/ja-jp/library/cc429058.aspx
-構造化例外処理と UnhandledExceptionFilter | Web-DB プロ...
http://keicode.com/windows/windows_exception_handling.php
*メモリリーク用 [#r3dcbb2e]
-通常、[[ユーザモード・プロセス・ダンプ]]の[[ハング・ダン...
-[[メモリ・リーク]]に起因するOutOfMemory等で異常終了する...
**グローバルフラグ [#g2aa5c94]
また、グローバルフラグを設定して
-ヒープリーク検出機能(ページ ヒープ)~
→ !Heap -p -a コマンドコマンドでstacktraceを出力可能にす...
-ユーザモード スタックトレース データベース~
→ !Heap -a コマンドでstacktraceを出力可能にする(オプシ...
を有効にする必要がある。
ページ ヒープをオンにした場合、ヒープオーバーランの検出も...
※ ヒープに対するバッファオーバーランをヒープオーバーラン...
-ページヒープ (PageHeap) によるヒープオーバーランの検出 -...
http://keicode.com/debug/dbg-pageheap.php
ページ ヒープ、ユーザモード スタックトレース データベース...
***Global Flags Editor [#u9810f49]
グローバルフラグの設定には、~
Global Flags Editor (Gflags.exe) ユーティリティを使用する。
(Debugging Tools for Windowsに同梱されている)
-CUI
--有効化:gflags -i <実行ファイル名> +ust +hpa
--無効化:gflags -i <実行ファイル名> -ust -hpa
-GUI~
ImageFileタブから、対象イメージの
--enable page heapチェックボックス
--create user mode stack trace databaseチェックボックス
>を有効・無効にする。
*参考 [#ee2d38b0]
-例外 - Web-DB プログラミング徹底解説~
http://keicode.com/debug/dbg320.php
-致命的な例外エラーについて~
http://support.microsoft.com/kb/150314/ja~
プロセッサ例外とその定義
--00 : Divide Fault (除算違反)
--02 : NMI Interrupt (NMI 割り込み)
--04 : Overflow Trap (オーバーフロー トラップ)
--05 : Bounds Check Fault (境界チェック違反)
--06 : Invalid Opcode Fault (無効なオペコード違反)
--07 : Coprocessor Not Available Fault (コプロセッサ利用...
--08 : Double Fault (ダブル フォールト)
--09 : Coprocessor Segment Overrun (コプロセッサ セグメン...
--10 (0Ah) : Invalid Task State Segment Fault (無効なタス...
--11 (0Bh) : Not Present Fault (不在違反)
--12 (0Ch) : Stack Fault (スタック違反)
--13 (0Dh) : General Protection Fault (一般保護違反)
--14 (0Eh) : Page Fault (ページ違反)
--16 (10h) : Coprocessor Error Fault (コプロセッサ エラー)
--17 (11h): Alignment Check Fault (アライメント チェック...
-事後分析デバッガのアタッチ
--sdk32 システムが起動するデバッガの選択~
http://support.microsoft.com/kb/103861/ja
--JIT アタッチ デバッグの有効化~
http://msdn.microsoft.com/ja-jp/library/2ac5yxx6.aspx
--@IT:.NET TIPS [アプリケーション・エラー]ダイアログ...
http://www.atmarkit.co.jp/fdotnet/dotnettips/262apperror/...
-Just-in-time デバッガーを使用してデバッグする - Visual S...
https://docs.microsoft.com/ja-jp/visualstudio/debugger/de...
----
Tags: [[:障害対応]], [[:性能]], [[:デバッグ]]
ページ名: