Share via


DTrace Live Dump

DTrace 提供使用 lkd () 從 D 腳本內擷取即時傾印的能力。 記憶體傾印檔案可用來使用 Windows 偵錯工具偵錯 Windows 中的複雜問題。 如需詳細資訊,請參閱 使用 WinDbg 分析損毀傾印檔案。 若要下載偵錯工具,請參閱 下載並安裝 WinDbg Windows 偵錯工具

DTrace 即時傾印可讓您在發生錯誤的確切時間點觸發傾印。 例如,錯誤可能是傳回錯誤的函式。 您可以使用 DTrace 來連結至此函式傳回,並在傳回值為 「error」 時觸發即時傾印。

注意

在 18980 版和 Windows Server 組建 18975 之後,Windows 測試人員組建支援 DTrace。

如需在 Windows 上使用 DTrace 的一般資訊,請參閱 DTrace

DTrace 即時傾印使用量

使用方式: lkd (參數) ;

您可以設定下列選項來變更即時迷你傾印中包含的資訊。

0x0 - 完整核心傾印 (預設值)

0x1 - 使用者頁面 + 核心頁面 (僅適用于 KD 附加)

0x2 - 迷你傾印

0x4 - Hyper-V 頁面 + 核心頁面)

0x5 - 使用者、核心和 Hypervisor 頁面。

即時傾印範例程式碼

#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. 按一下 [檢視] 並核取 [顯示分析和偵錯記錄]。 這會顯示存留性ump 的分析通道。

  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 金鑰設定為零來停用節流來重試,如下所示。

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

磁碟空間問題 (事件識別碼 202 -錯誤文字:即時傾印寫入延遲傾印資料 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 程式碼範例