Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
DTrace poskytuje nástroj pro zachycení živého výpisu ze skriptu D pomocí lkd(). Soubory výpisu paměti se používají k ladění složitých problémů v systému Windows pomocí ladicího programu systému Windows. Další informace naleznete v tématu Analýza výpisů paměti po selhání systému pomocí WinDbg. Chcete-li stáhnout ladicí program, přečtěte si téma Stažení a instalace ladicího programu systému Windows WinDbg.
Dynamický výpis paměti DTrace umožňuje aktivovat výpis paměti v přesném okamžiku, kdy došlo k chybě. Může to být například funkce, která vrací chybu. DTrace můžete použít k připojení k této funkci vrácení a aktivaci dynamického výpisu paměti, pokud je vrácená hodnota "error".
Poznámka:
DTrace se podporuje v buildech Insider systému Windows po verzi 18980 a buildu Windows Serveru 18975.
Obecné informace o práci s DTrace ve Windows naleznete v tématu DTrace.
Použití živého výpisu DTrace
Použití: lkd (parametr);
Následující možnosti lze nastavit pro úpravu informací, které jsou součástí živého mini výpisu paměti.
0x0 – úplný výpis stavu jádra (výchozí hodnota)
0x1 – stránky uživatelů a stránky jádra (funguje jenom s připojením KD)
0x2 - Minidump
0x4 – stránky Hyper-V + stránky jádra)
0x5 – stránky uživatele, jádra a hypervisoru
Příklad kódu živého výpisu paměti
#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);
}
}
Uložte soubor jako livedumpstatuscheck.d.
Otevřete příkazový řádek jako správce a spusťte skript pomocí možnosti -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
Soubor s výpisem paměti, který je vytvořen, je obvykle umístěn v C:\Windows\LiveKernelReports.
Pokud došlo ke změně umístění souboru výpisu paměti, hodnota se uloží v tomto klíči registru: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports
Pomocí WinDbg můžete pracovat se souborem s výpisem paměti, jak je popsáno výše.
Řešení problémů
Zobrazení živých událostí souvisejících s výpisem paměti
Otevřete Prohlížeč událostí systému Windows: Přejděte na: Protokoly aplikací a služeb -> Microsoft -> Windows -> Kernel-Livedump -> Operational
Pokud jste nenašli žádné protokoly, povolte analytický kanál z příkazového řádku nebo prohlížeče událostí, jak je popsáno níže.
Povolení analytického kanálu z příkazového řádku
Tento příkaz použijte k povolení analytického kanálu v příkazovém řádku správce.
wevtutil sl Microsoft-Windows-Kernel-LiveDump/Analytic /e:true
Povolení analytického kanálu pomocí Prohlížeče událostí
Spuštění Prohlížeče událostí systému Windows
Klikněte na Zobrazit a zaškrtněte políčko Zobrazit analytické protokoly a protokoly ladění. Zobrazí se analytický kanál pro livedump.
Klikněte pravým tlačítkem myši a povolte Microsoft-Windows-Kernel-LiveDump/Analytic.
Povolení úplných výpisů paměti za provozu
Níže uvedená nastavení ukazují, jak nastavit maximální počet úplných výpisů paměti, které mohou být kdykoli uloženy na disku, na 10 a ukládat úplné výpisy paměti, nikoli pouze mini výpis.
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
Další informace o těchto nastaveních najdete v tématu Nastavení WER.
Zakázat omezování
Omezování je funkce, která zabraňuje tomu, aby systém výpisů paměti a protokolování ovlivňoval normální používání systému Windows. Tato funkce může kolidovat s vytvářením live výpisů v určitých prostředích s omezenými prostředky.
Zkontrolujte nastavení omezení dynamického výpisu paměti a v případě potřeby akci opakujte zakázáním omezování nastavením systemThrottleThreshold a ComponentThrottleThreshold klíče na nulu, jak je znázorněno zde.
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
Problémy s místem na disku (ID události 202 -Error Text: Rozhraní API pro zápis odložených dat z aktivního výpisu bylo ukončeno. Stav NT: 0xC000007F.)
To znamená, že místo na disku není dostatečné. Aktualizujte níže uvedený klíč registru, aby se změnila cesta pro vytvoření živého výpisu, v tomto příkladu na jednotku d: s dostupným dalším místem úložiště.
reg add hklm\system\currentcontrolset\control\crashcontrol\livekernelreports /v "LiveKernelReportsPath" /t reg_sz /d "\??\d:\livedumps"
Tento příkaz nastaví kořenovou cestu dynamického výpisu paměti na d:\livedumps (jako příklad).
Složku nevytvořujte ručně, protože je spravovaná operačním systémem, a vytvoří se při aktivaci výpisu paměti se správnými oprávněními.