Bagikan melalui


DTrace Live Dump

DTrace menyediakan fasilitas untuk menangkap live dump dari dalam D-script menggunakan lkd(). File cadangan memori digunakan untuk men-debug masalah kompleks di Windows menggunakan Windows Debugger. Untuk informasi selengkapnya, lihat Menganalisis file crash dump dengan menggunakan WinDbg. Untuk mengunduh debugger, lihat Mengunduh dan menginstal debugger Windows WinDbg.

DTrace live dump menyediakan kemampuan untuk memicu cadangan pada titik yang tepat di mana kesalahan terjadi. Misalnya, kesalahan bisa berupa fungsi yang mengembalikan kesalahan. Anda dapat menggunakan DTrace untuk menyisipkan pada pengembalian fungsi ini dan memicu dump langsung ketika nilai yang dikembalikan adalah "kesalahan".

Nota

DTrace didukung di build Insider Windows setelah versi 18980 dan Windows Server Build 18975.

Untuk informasi umum tentang bekerja dengan DTrace di Windows, lihat DTrace.

Penggunaan DTrace Live Dump

Penggunaan: lkd (parameter);

Opsi berikut dapat diatur untuk mengubah informasi yang disertakan dalam live mini dump.

0x0 - Cadangan kernel penuh (nilai default)

0x1 - Halaman pengguna + Halaman kernel (hanya berfungsi dengan lampiran KD)

0x2 - Minidump

0x4 - halaman Hyper-V + halaman Kernel)

0x5 - Halaman pengguna, kernel, dan hypervisor.

Kode Contoh Cuplikan Langsung

#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);
	}
}

Simpan file sebagai livedumpstatuscheck.d.

Buka perintah sebagai Administrator dan jalankan skrip menggunakan opsi -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

File cadangan yang dibuat biasanya terletak di C:\Windows\LiveKernelReports.

Jika lokasi file cadangan telah diubah, nilai disimpan dalam kunci registri ini: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports

Gunakan WinDbg untuk bekerja dengan file cadangan seperti yang dijelaskan di atas.

Penyelesaian Masalah

Buka Penampil Peristiwa Windows: Navigasi ke: Log Aplikasi dan Layanan->Microsoft->Windows->Kernel-Livedump->Operational

Jika Anda tidak menemukan log apa pun, aktifkan saluran analitik dari prompt perintah atau penampil peristiwa seperti yang dijelaskan di bawah ini.

Mengaktifkan saluran analitik dari baris perintah

Gunakan perintah ini untuk mengaktifkan saluran analitik dari prompt perintah administrator.

wevtutil sl Microsoft-Windows-Kernel-LiveDump/Analytic /e:true

Mengaktifkan saluran analitik menggunakan Penampil Peristiwa

  1. Mulai Penampil Peristiwa Windows

  2. Klik Lihat dan centang "Tampilkan log Analitik dan Debug". Ini akan menampilkan saluran analitik untuk livedump.

  3. Klik kanan dan aktifkan Microsoft-Windows-Kernel-LiveDump/Analytic.

Mengaktifkan cadangan langsung penuh

Contoh pengaturan di bawah ini, menunjukkan pengaturan jumlah maksimum cadangan langsung penuh yang mungkin ada di disk pada waktu tertentu menjadi 10 dan menyimpan cadangan memori penuh, bukan hanya cadangan mini.

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

Untuk informasi selengkapnya tentang pengaturan ini, lihat Pengaturan WER.

Menonaktifkan pengurangan kecepatan

Pelambatan adalah fitur yang mencegah sistem pembuatan dump dan pencatatan log memengaruhi penggunaan normal Windows. Fitur ini dapat mengganggu pembuatan dump langsung di lingkungan yang terbatas sumber dayanya.

Periksa pengaturan throttle dump langsung dan jika perlu coba lagi dengan menonaktifkan throttle dengan mengatur nilai kunci SystemThrottleThreshold dan ComponentThrottleThreshold ke nol seperti yang ditunjukkan berikut.

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

Masalah ruang disk (Event ID 202 -Error Text: Live Dump Write Deferred Dump Data API berakhir. Status NT: 0xC000007F.)

Ini berarti ruang disk tidak mencukup. Perbarui kunci registri yang ditunjukkan di bawah ini untuk mengubah jalur pembuatan cadangan langsung, dalam contoh ini ke drive d: yang memiliki ruang penyimpanan tambahan yang tersedia.

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

Perintah ini mengatur path root dump langsung ke d:\livedumps (sebagai contoh).

Jangan membuat folder secara manual karena dikelola oleh Sistem Operasi dan akan dibuat ketika dump dipicu dengan izin yang tepat.

Lihat Juga

DTrace di Windows

Pemrograman DTrace Windows

Sampel Kode Windows DTrace