Konfigurowanie automatycznego debugowania
Użytkownicy mogą skonfigurować automatyczne debugowanie, aby pomóc im określić, dlaczego system lub aplikacja przestała odpowiadać.
Konfigurowanie automatycznego debugowania pod kątem awarii systemu
Aby skonfigurować komputer docelowy do generowania pliku zrzutu awaryjnego, gdy system przestaje odpowiadać, użyj aplikacji System w Panelu sterowania. Kliknij zaawansowane ustawienia systemu, co spowoduje wyświetlenie okna dialogowego Właściwości systemu. Na karcie Zaawansowane w tym polu kliknij Ustawienia w obszarze Uruchamianie i odzyskiwanie, a następnie użyj odpowiednich opcji odzyskiwania. Alternatywnie można skonfigurować opcje zrzutu awaryjnego przy użyciu następującego klucza rejestru:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
Plik, który można określić, to plik zrzutu awaryjnego. Jego domyślna nazwa to Memory.dmp. Zrzut awaryjny można debugować za pomocą debugera trybu jądra, takiego jak WinDbg lub KD. Aby uzyskać więcej informacji, zobacz dokumentację zawartą w debugerze.
Konfigurowanie automatycznego debugowania pod kątem awarii aplikacji
Gdy aplikacja przestaje odpowiadać (na przykład po naruszeniu dostępu), system automatycznie wywołuje debuger określony w rejestrze na potrzeby debugowania pośmiertnego. Identyfikator procesu oraz uchwyt zdarzenia są przekazywane do debugera, jeśli wiersz polecenia jest prawidłowo skonfigurowany. Poniższa procedura opisuje sposób określania debugera w rejestrze.
Aby ustawić debuger jako debuger postmortem
Przejdź do następującego klucza rejestru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
Dodaj lub zmodyfikuj wartość Debuggera przy użyciu ciągu REG_SZ, który określa wiersz polecenia dla debuggera.
Ciąg powinien zawierać w pełni kwalifikowaną ścieżkę do pliku wykonywalnego debugera. Wskaż identyfikator procesu i uchwyt zdarzenia, używając parametrów "%ld" w wierszu poleceń debugera. Różne debugery mogą mieć własne składnie parametrów wskazujące te wartości. Po wywołaniu debugera pierwszy z nich, "%ld", jest zastępowany identyfikatorem procesu, a poniższy, "%ld", jest zastępowany dojściem zdarzenia.
Poniższy tekst jest przykładem sposobu konfigurowania usługi WinDbg jako debugera.
"C:\debuggers\windbg.exe" -p %ld -e %ld -g
Jeśli chcesz, aby debuger był wywoływany bez interakcji użytkownika, dodaj lub edytuj wartość Auto, używając ciągu REG_SZ, który określa, czy system powinien wyświetlić okno dialogowe użytkownikowi przed wywołaniem debugera. Ciąg "1" wyłącza okno dialogowe; ciąg "0" włącza okno dialogowe.
Wykluczanie aplikacji z automatycznego debugowania
W poniższej procedurze opisano, jak wykluczyć aplikację z automatycznego debugowania po ustawieniu wartości Auto pod kluczem AeDebug na 1.
Aby wykluczyć aplikację z automatycznego debugowania
Przejdź do następującego klucza rejestru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
Dodaj wartość REG_DWORD do podklucza AutoExclusionList, gdzie nazwa jest nazwą pliku wykonywalnego, a wartość to 1. Domyślnie menedżer okien pulpitu (Dwm.exe) jest wykluczony z automatycznego debugowania, ponieważ w przeciwnym razie może wystąpić zakleszczenie systemu, jeśli Dwm.exe przestanie odpowiadać (użytkownik nie może zobaczyć interfejsu wyświetlanego przez debuger, ponieważ Dwm.exe nie odpowiada, a Dwm.exe nie może zakończyć działania, ponieważ jest on przechowywany przez debuger).
Windows Server 2003 i Windows XP: podklucz AutoExclusionList jest niedostępny; w związku z tym nie można wykluczyć żadnej aplikacji, w tym Dwm.exe, z automatycznego debugowania.
Domyślne wpisy rejestru AeDebug mogą być reprezentowane w następujący sposób:
HKEY_LOCAL_MACHINE
SOFTWARE
Microsoft
Windows NT
CurrentVersion
AeDebug
Auto = 1
AutoExclusionList
DWM.exe = 1
Tematy pokrewne