Aracılığıyla paylaş


DTrace Canlı Dökümü

DTrace, lkd() kullanarak D betiğinin içinden canlı dökümü yakalamak için bir tesis sağlar. Bellek dökümü dosyaları, Windows Hata Ayıklayıcısı kullanılarak Windows'ta karmaşık sorunların hatalarını ayıklamak için kullanılır. WinDbg kullanarak kilitlenme döküm dosyalarını analiz etme hakkında daha fazla bilgi için bkz. Hata ayıklayıcıyı indirmek için bkz. WinDbg Windows hata ayıklayıcısını indirme ve yükleme.

DTrace canlı dökümü, dökümü tam olarak hatanın oluştuğu noktada tetikleme olanağı sağlar. Örneğin hata, hata döndüren bir işlev olabilir. DTrace kullanarak bu işlev dönüşünü bağlayabilir ve dönüş değeri "hata" olduğunda canlı dökümü tetikleyebilirsiniz.

Uyarı

DTrace, Sürüm 18980 ve Windows Server Derlemesi 18975'in ardından Windows'un Insider derlemelerinde desteklenir.

Windows üzerinde DTrace ile çalışma hakkında genel bilgi için bkz. DTrace.

DTrace Canlı Döküm Kullanımı

Kullanım: lkd (parametre);

Canlı mini döküme hangi bilgilerin dahil olduğunu değiştirmek için aşağıdaki seçenekler ayarlanabilir.

0x0 - Tam çekirdek dökümü (varsayılan değer)

0x1 - Kullanıcı sayfaları + Çekirdek sayfaları (yalnızca KD ekleme ile çalışır)

0x2 - MiniDump

0x4 - Hyper-V sayfaları + Çekirdek sayfaları)

0x5 - Kullanıcı, çekirdek ve hiper yönetici sayfaları.

Canlı Döküm Örnek Kodu

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

Dosyayı livedumpstatuscheck.d olarak kaydedin.

Yönetici olarak bir komut istemi açın ve -s seçeneğini kullanarak betiği çalıştırın.

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

Oluşturulan döküm dosyası genellikle içinde C:\Windows\LiveKernelReportsbulunur.

Döküm dosyası konumu değiştirildiyse, değer şu kayıt defteri anahtarında depolanır: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports

Yukarıda açıklandığı gibi döküm dosyasıyla çalışmak için WinDbg kullanın.

Sorun giderme

Windows Olay Görüntüleyicisi'ni açın: Şuraya gidin: Uygulamalar ve Hizmetler Günlükleri-Microsoft-Windows-Kernel-Livedump-Operational>>>>

Günlük bulamadıysanız aşağıda açıklandığı gibi komut isteminden veya olay görüntüleyicisinden analiz kanalını etkinleştirin.

Komut isteminden analiz kanalını etkinleştirme

Analiz kanalını ve yönetici komut istemini etkinleştirmek için bu komutu kullanın.

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

Olay Görüntüleyicisi'ni kullanarak analiz kanalını etkinleştirme

  1. Windows Olay Görüntüleyicisi'ni başlatma

  2. Görüntüle'ye tıklayın ve "Analiz ve Hata Ayıklama günlüklerini göster" seçeneğini işaretleyin. Bu, livedump için analiz kanalını gösterir.

  3. Microsoft-Windows-Kernel-LiveDump/Analytic öğesine sağ tıklayın ve etkinleştirin.

Tam canlı dökümleri etkinleştirme

Aşağıdaki örnek ayarlar, herhangi bir zamanda diskte olabilecek en fazla tam canlı döküm sayısını 10 olarak ayarlamayı gösterir ve yalnızca mini dökümü değil, tam bellek dökümlerini depolar.

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

Bu ayarlar hakkında daha fazla bilgi için bkz. WER Ayarları.

Kısıtlamayı devre dışı bırak

Hız Kısıtlaması, dökümler ve günlükleme sisteminin Windows'un normal kullanımını etkilemesini engelleyen bir özelliktir. Bu özellik, belirli kaynak kısıtlanmış ortamlarda canlı dökümlerin oluşturulmasını engelleyebilir.

Canlı döküm kısıtlama ayarlarını kontrol edin ve gerekirse, burada gösterildiği gibi SystemThrottleThreshold ve ComponentThrottleThreshold anahtarlarını sıfıra ayarlayarak kısıtlamayı devre dışı bırakıp yeniden deneyin.

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

Disk alanı sorunları (Olay Kimliği 202 -Error Metin: Canlı Döküm Yazma Ertelenmiş Döküm Veri API'si sona erdi. NT Durumu: 0xC000007F.)

Bu, disk alanının yetersiz olduğu anlamına gelir. Canlı döküm oluşturma yolunu değiştirmek için aşağıda gösterilen kayıt defteri anahtarını güncelleştirin. Bu örnekte, kullanılabilir ek depolama alanı olan d: sürücüsüne geçin.

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

Bu komut, canlı döküm kök yolunu d:\livedumps olarak ayarlar (örnek olarak).

klasörü işletim sistemi tarafından yönetildiğinden ve döküm uygun izinlerle tetiklendiğinde oluşturulacağı için el ile oluşturmayın.

Ayrıca Bkz.

Windows'da DTrace

Windows için DTrace Programlaması

DTrace Windows Kod Örnekleri