DTrace ライブ ダンプ

DTrace には、lkd() を使用して D スクリプト内からライブ ダンプをキャプチャする機能が用意されています。 メモリ ダンプ ファイルは、Windows デバッガーを使用して Windows の複雑な問題をデバッグするために使用されます。 詳細については、「 WinDbg を使用したクラッシュ ダンプ ファイルの分析」を参照してください。 デバッガーをダウンロードするには、「 WinDbg Windows デバッガーをダウンロードしてインストールする」を参照してください。

DTrace ライブ ダンプは、エラーが発生した正確な時点でダンプをトリガーする機能を提供します。 たとえば、エラーは、エラーを返す関数である可能性があります。 DTrace を使用して、この関数の戻り値にフックし、戻り値が "error" の場合にライブ ダンプをトリガーできます。

注

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

イベント ビューアーを使用して分析チャネルを有効にする

  1. Windows イベント ビューアーの起動

  2. [表示] をクリックし、[分析ログとデバッグ ログの表示] をオンにします。 これにより、livedump の分析チャネルが表示されます。

  3. 右クリックし、 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 キーを 0 に設定して調整を無効にして、ライブ ダンプのスロットル設定を確認し、必要に応じて再試行します。

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 -Error テキスト: ライブ ダンプ書き込みが遅延されました。ダンプ データ API が終了しました。NT 状態: 0xC000007F)。

これは、ディスク領域が不足していることを意味します。 次に示すレジストリ キーを更新して、ライブ ダンプ作成のパスを変更します。この例では、追加の記憶域スペースを使用できるドライブ d: に変更します。

reg add hklm\system\currentcontrolset\control\crashcontrol\livekernelreports /v "LiveKernelReportsPath" /t reg_sz /d "\??\d:\livedumps"

このコマンドは、ライブ ダンプ のルート パスを (例として) d:\livedumps に設定します。

OS によって管理され、適切なアクセス許可でダンプがトリガーされたときに作成されるため、フォルダーを手動で作成しないでください。

こちらもご覧ください

Windows 上の DTrace

DTrace Windowsプログラミング

DTrace Windowsコードサンプル