DTrace ライブ ダンプ
DTrace には、lkd() を使用して D スクリプト内からライブ ダンプをキャプチャする機能があります。 メモリ ダンプ ファイルは、Windows デバッガーを利用して Windows の複雑な問題をデバッグするために使用されます。 詳細については、「WinDbg を使用したクラッシュ ダンプ ファイルの分析」を参照してください。 デバッガーをダウンロードするには、「WinDbg Windows デバッガーをダウンロードしてインストールする」を参照してください。
DTrace ライブ ダンプを使用すると、エラーが発生した正確な時点でダンプをトリガーできます。 たとえば、エラーは、エラーを返す関数である可能性があります。 DTrace を使用して、この関数の復帰にフックし、戻り値が "error" の場合にライブ ダンプをトリガーできます。
Note
DTraceは、バージョン18980およびWindows Server Build 18975以降のInsiderのビルドでサポートされています。
Windows での DTrace の操作に関する一般的な情報については、「DTrace」を参照してください。
DTrace ライブ ダンプの使い方
使用法: lkd (パラメーター);
次のオプションを設定すると、ライブ ミニ ダンプに含まれる情報を変更できます。
0x0 - 完全なカーネル ダンプ (既定値)
0x1 - ユーザー ページ + カーネル ページ (KD アタッチでのみ機能)
0x2 - ミニダンプ
0x4 - Hyper-V ページ + カーネル ページ)
0x5 - ユーザー、カーネル、ハイパーバイザーの各ページ。
ライブ ダンプのコード例
#pragma D option destructive
inline uint32_t STATUS_UNSUCCESSFUL = 0xc0000001UL;
syscall:::return
{
this->status = (uint32_t)arg0;
if (this->status == STATUS_UNSUCCESSFUL)
{
printf ("Return value arg0:%x \n", this->status);
printf ("Triggering LiveDump \n");
lkd(0);
exit(0);
}
}
ファイルを livedumpstatuscheck.d として保存します。
管理者としてコマンド プロンプトを開き、-s オプションを使用してスクリプトを実行します。
C:\Windows\System32>dtrace -s livedumpstatuscheck.d
dtrace: script 'livedumpstatuscheck.d' matched 1881 probes
dtrace: allowing destructive actions
CPU ID FUNCTION:NAME
0 93 NtAlpcSendWaitReceivePort:return Return value arg0:c0000001
Triggering LiveDump
通常、作成されるダンプ ファイルは C:\Windows\LiveKernelReports
にあります。
ダンプ ファイルの場所が変更された場合、値は次のレジストリ キーに格納されます: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports
前述のように、WinDbg を使用してダンプ ファイルを操作します。
トラブルシューティング
ライブ ダンプ関連のイベントの表示
Windows イベント ビューアーを開きます: 移動: [アプリケーションとサービス ログ]->[Microsoft]->[Windows]->[Kernel-Livedump]->[Operational]
ログが見つからない場合は、次の説明に従って、コマンド プロンプトまたはイベント ビューアーから分析チャネルを有効にします。
コマンド プロンプトから分析チャネルを有効にする
このコマンドを使用して、管理者コマンド プロンプトから分析チャネルを有効にします。
wevtutil sl Microsoft-Windows-Kernel-LiveDump/Analytic /e:true
イベント ビューアーを使用して分析チャネルを有効にする
Windows イベント ビューアーを起動します
[表示] をクリックし、[分析およびデバッグのログの表示] をオンにします。 これにより、ライブダンプの分析チャネルが表示されます。
Microsoft-Windows-Kernel-LiveDump/Analytic を右クリックし、有効にします。
完全なライブ ダンプの有効化
以下の設定例では、同時にディスクに置くことができる完全なライブ ダンプの最大数を 10 に設定し、ミニ ダンプだけでなく、完全メモリ ダンプを格納します。
reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v FullLiveReportsMax /d 10
reg add "HKLM\System\CurrentControlSet\Control\CrashControl" /f /t REG_DWORD /v AlwaysKeepMemoryDump /d 1
これらの設定の詳細については、「WER 設定」を参照してください。
調整の無効化
調整は、ダンプとログ システムが Windows の通常の使用に影響を与えないようにする機能です。 この機能は、特定のリソース制約のある環境で、ライブ ダンプの作成に干渉する可能性があります。
ライブ ダンプの調整設定を確認し、必要に応じて調整を無効にして再試行します。調整を無効にするには、次に示すように、SystemThrottleThreshold キーと ComponentThrottleThreshold キーをゼロに設定します。
reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v SystemThrottleThreshold /d 0
reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v ComponentThrottleThreshold /d 0
ディスク領域の問題 (イベント ID 202 - エラー テキスト: ライブ ダンプ書き込み遅延ダンプ データ API が終了しました。NT 状態: 0xC000007F)。
これは、ディスク領域が不足していることを意味します。 次に示すレジストリ キーを更新して、ライブ ダンプ作成のパスを変更します。この例では、追加のストレージ領域を使用できるドライブ d: に変更します。
reg add hklm\system\currentcontrolset\control\crashcontrol\livekernelreports /v "LiveKernelReportsPath" /t reg_sz /d "\??\d:\livedumps"
このコマンドは、ライブ ダンプのルート パスを d:\livedumps
に設定します (例として)。
このフォルダーを手動で作成しないでください。このフォルダーは OS によって管理され、ダンプがトリガーされたときに適切なアクセス許可で作成されます。