Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DTrace zapewnia mechanizm do przechwytywania zrzutu pamięci na żywo wewnątrz skryptu D za pomocą lkd(). Pliki zrzutu pamięci są używane do debugowania złożonych problemów w systemie Windows przy użyciu debugera systemu Windows. Aby uzyskać więcej informacji, zobacz Analizowanie plików zrzutu awaryjnego przy użyciu usługi WinDbg. Aby pobrać debuger, zobacz Pobieranie i instalowanie debugera systemu Windows WinDbg.
Zrzut danych na żywo DTrace umożliwia wyzwolenie zrzutu w dokładnym punkcie, w którym wystąpił błąd. Na przykład błąd może być funkcją zwracającą błąd. Możesz użyć DTrace, aby podłączyć się do tej funkcji zwracać i wyzwalać zrzut na żywo, gdy zwracana wartość to "błąd".
Uwaga / Notatka
Narzędzie DTrace jest obsługiwane w kompilacjach niejawnych systemu Windows po wersji 18980 i Windows Server Build 18975.
Aby uzyskać ogólne informacje na temat pracy z funkcją DTrace w systemie Windows, zobacz DTrace.
Użycie funkcji Live Dump w DTrace
Użycie: lkd (parametr);
Następujące opcje można ustawić, aby zmienić informacje zawarte w zrzutie na żywo.
0x0 — pełny zrzut jądra (wartość domyślna)
0x1 — strony użytkownika i strony jądra (działa tylko z dołączaniem KD)
0x2 — Minidump
0x4 — strony Hyper-V i strony jądra)
0x5 — strony użytkownika, jądra i funkcji hypervisor.
Przykładowy kod dla Live Dump
#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);
}
}
Zapisz plik jako livedumpstatuscheck.d.
Otwórz wiersz polecenia jako administrator i uruchom skrypt przy użyciu opcji -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
Utworzony plik zrzutu znajduje się zwykle w folderze C:\Windows\LiveKernelReports.
Jeśli lokalizacja pliku zrzutu została zmieniona, wartość jest przechowywana w tym kluczu rejestru: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports
Użyj narzędzia WinDbg, aby pracować z plikiem zrzutu zgodnie z powyższym opisem.
Rozwiązywanie problemów
Wyświetlanie zdarzeń na żywo związanych z zrzutem
Otwórz Podgląd zdarzeń systemu Windows: przejdź do: Dzienniki aplikacji i usług Microsoft-Windows-Kernel-Livedump-Operational>>>>
Jeśli nie znaleziono żadnych dzienników, włącz kanał analityczny z poziomu wiersza polecenia lub podglądu zdarzeń zgodnie z poniższym opisem.
Włączanie kanału analitycznego z poziomu wiersza polecenia
Użyj tego polecenia, aby włączyć kanał analityczny z poziomu wiersza polecenia administratora.
wevtutil sl Microsoft-Windows-Kernel-LiveDump/Analytic /e:true
Włączanie kanału analitycznego przy użyciu Podglądu zdarzeń
Uruchamianie Podglądu zdarzeń systemu Windows
Kliknij pozycję Wyświetl i zaznacz pozycję "Pokaż dzienniki analityczne i debugowania". Spowoduje to wyświetlenie kanału analitycznego dla livedump.
Kliknij prawym przyciskiem myszy i włącz pozycję Microsoft-Windows-Kernel-LiveDump/Analytic.
Włączanie pełnych zrzutów na żywo
Poniższe przykładowe ustawienia pokazują ustawienie maksymalnej liczby pełnych zrzutów w trybie aktywnym, które mogą znajdować się na dysku w danym momencie, na 10 i co przechowuje pełne zrzuty pamięci, a nie tylko zrzuty o zmniejszonym rozmiarze.
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
Aby uzyskać więcej informacji na temat tych ustawień, zobacz Ustawienia usługi WER.
Wyłączanie ograniczania przepustowości
Ograniczanie to funkcja, która zapobiega temu, by system zrzutów i rejestrowania wpływał na normalne użytkowanie systemu Windows. Ta funkcja może zakłócać tworzenie zrzutów na żywo w środowiskach o ograniczonych zasobach.
Sprawdź ustawienia ograniczania zrzutu na żywo i w razie potrzeby spróbuj ponownie, wyłączając ograniczanie, ustawiając wartość SystemThrottleThreshold i ComponentThrottleThreshold keys na zero, jak pokazano poniżej.
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
Problemy z miejscem na dysku (identyfikator zdarzenia 202 -Error tekst: interfejs API dla odroczonego zapisu danych zrzutu na żywo został zakończony. Stan NT: 0xC000007F.)
Oznacza to, że ilość miejsca na dysku jest niewystarczająca. Zaktualizuj klucz rejestru pokazany poniżej, aby zmienić ścieżkę do tworzenia zrzutów na żywo. W tym przykładzie zmiana dotyczy dysku d:, który ma dostępne dodatkowe miejsce na przechowywanie danych.
reg add hklm\system\currentcontrolset\control\crashcontrol\livekernelreports /v "LiveKernelReportsPath" /t reg_sz /d "\??\d:\livedumps"
To polecenie ustawia ścieżkę główną zrzutu na żywo na d:\livedumps (przykładowo).
Nie twórz ręcznie folderu, ponieważ zarządza nim system operacyjny i zostanie utworzony automatycznie, gdy zostanie wyzwolony zrzut z odpowiednimi uprawnieniami.