Memory Dump erstellen: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) K |
Admin (Diskussion | Beiträge) |
||
(27 dazwischenliegende Versionen des gleichen Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | [[Datei:Memory-dump-size.png|right| | + | [[Datei:Memory-dump-size.png|thumb|right|550px|Beispiel: Host mit 16GB Memory]] |
+ | '''<span style="color:red">Bevor die Memory Dumps aktiviert werden bzw. die Registry-Setting geändert werden, empfehle ich die aktuellen Settings zu merken.</span>''' | ||
+ | |||
== Location des Dumps ändern (Beispiel Laufwerk X:)== | == Location des Dumps ändern (Beispiel Laufwerk X:)== | ||
− | Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name DumpFile –value X:\MEMORY.DMP | + | <source lang="powershell">Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name DumpFile –value X:\MEMORY.DMP</source> |
+ | |||
+ | == Aktivierung Dump für NMI-Crash (Dient zur Reproduzierung) == | ||
+ | <source lang="powershell">Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name NMICrashDump –Value 1 </source> | ||
+ | |||
+ | |||
+ | == Dump Konfigurationen/Arten == | ||
+ | '''Es gibt folgende Dump-Konfigurationen (Registry-Key: HKLM:\System\CurrentControlSet\Control\CrashControl):''' <br> | ||
+ | 0 = No Dump <br> | ||
+ | 1 = Complete Memory Dump <br> | ||
+ | 2 = Kernel Memory Dump <br> | ||
+ | 3 = Small Memory Dump <br> | ||
+ | 7 = Automatic Memory Dump <br> | ||
+ | Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name CrashDumpEnabled –value <Dump-Art> | ||
+ | |||
− | |||
=== Active Memory Dump === | === Active Memory Dump === | ||
Mit folgenden Befehlen kann der "Active Memory Dump" aktiviert werden. Nach dem ausführen des Befehls muss das System neugestartet werden. | Mit folgenden Befehlen kann der "Active Memory Dump" aktiviert werden. Nach dem ausführen des Befehls muss das System neugestartet werden. | ||
− | <source lang="powershell> | + | <source lang="powershell"> |
Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name CrashDumpEnabled –value 1 | Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name CrashDumpEnabled –value 1 | ||
Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name FilterPages –value 1 | Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name FilterPages –value 1 | ||
Zeile 13: | Zeile 28: | ||
=== Full Memory Dump === | === Full Memory Dump === | ||
+ | ==== Vorbereitung ==== | ||
+ | Damit ein Full Memory Dump geschrieben werden kann müssen folgende zwei Punkte im Vorhinein gemacht/abgeklärt werden: | ||
+ | *Genug Speicherplatz bei der Dump-Location (Default Laufwerk C:) freilassen -> Memory * 2 + 256MB | ||
+ | *Virtual Memory auf fixed setzen -> Memory * 2 + 256MB | ||
+ | |||
+ | |||
+ | Mit folgenden Befehlen kann der "Full Memory Dump" aktiviert werden und das Virtual Memory auf fixed gesetzt werden | ||
+ | Nach dem ausführen des Befehls muss das System neugestartet werden. | ||
<source lang="powershell"> | <source lang="powershell"> | ||
+ | # Set Registry-Settings | ||
Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name CrashDumpEnabled –value 1 | Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name CrashDumpEnabled –value 1 | ||
− | |||
Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name NMICrashDump –value 1 | Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name NMICrashDump –value 1 | ||
+ | Remove-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name FilterPages | ||
+ | |||
+ | # Check Total Memory Size for virtual Memory | ||
+ | $MemoryInGB = [math]::Round((Get-Ciminstance Win32_OperatingSystem).TotalVisibleMemorySize/1mb,2) | ||
+ | $MemoryInMB = $MemoryInGB * 1024 | ||
+ | |||
+ | # Set virtual Memory to fixed and with the right Value (Memory * 2 + 256MB) | ||
+ | $computersys = Get-WmiObject Win32_ComputerSystem -EnableAllPrivileges; | ||
+ | $computersys.AutomaticManagedPagefile = $False; | ||
+ | $computersys.Put(); | ||
+ | $pagefile = Get-WmiObject -Query "Select * From Win32_PageFileSetting Where Name like '%pagefile.sys'"; | ||
+ | $pagefile.InitialSize = ($MemoryInMB + 256); | ||
+ | $pagefile.MaximumSize = ($MemoryInMB + 256); | ||
+ | $pagefile.Put(); | ||
+ | |||
+ | # Message | ||
+ | Write-Host "To apply the settings reboot the system" -ForegroundColor Green | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | == Dump generieren == | ||
+ | [[Datei:Ilo-nmi.png|800px|right]]<br> | ||
+ | [[Datei:02-Huawei.png|800px|right]]<br> | ||
+ | *Der Dump wird automatisch beim nächsten Bluescreen erstellt. | ||
+ | *Dies kann mittels einem ''NMI'' auch forciert ausgeführt werden. (Siehe Bild) | ||
+ | *Eine weitere Möglichkeit wäre die ''NotMyFault64.exe'' von den Sysinternals-Tools auf das Zielsystem zu kopieren und diese auszuführen. Ähnlich wie NMI führt dies ebenfalls einen "Bluescreen" aus. | ||
− | ''Quelle: https://blogs.msdn.microsoft.com/clustering/2015/05/18/windows-server-2016-failover-cluster-troubleshooting-enhancements-active-dump/'' | + | ''Quelle: '' |
+ | *''https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/kernel-mode-dump-files'' | ||
+ | *''https://blogs.msdn.microsoft.com/clustering/2015/05/18/windows-server-2016-failover-cluster-troubleshooting-enhancements-active-dump/'' | ||
+ | *''https://blogs.technet.microsoft.com/askcore/2012/09/12/windows-8-and-windows-server-2012-automatic-memory-dump/'' | ||
Aktuelle Version vom 2. Oktober 2018, 16:56 Uhr
Bevor die Memory Dumps aktiviert werden bzw. die Registry-Setting geändert werden, empfehle ich die aktuellen Settings zu merken.
Inhaltsverzeichnis
Location des Dumps ändern (Beispiel Laufwerk X:)
Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name DumpFile –value X:\MEMORY.DMP
Aktivierung Dump für NMI-Crash (Dient zur Reproduzierung)
Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name NMICrashDump –Value 1
Dump Konfigurationen/Arten
Es gibt folgende Dump-Konfigurationen (Registry-Key: HKLM:\System\CurrentControlSet\Control\CrashControl):
0 = No Dump
1 = Complete Memory Dump
2 = Kernel Memory Dump
3 = Small Memory Dump
7 = Automatic Memory Dump
Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name CrashDumpEnabled –value <Dump-Art>
Active Memory Dump
Mit folgenden Befehlen kann der "Active Memory Dump" aktiviert werden. Nach dem ausführen des Befehls muss das System neugestartet werden.
Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name CrashDumpEnabled –value 1 Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name FilterPages –value 1
Full Memory Dump
Vorbereitung
Damit ein Full Memory Dump geschrieben werden kann müssen folgende zwei Punkte im Vorhinein gemacht/abgeklärt werden:
- Genug Speicherplatz bei der Dump-Location (Default Laufwerk C:) freilassen -> Memory * 2 + 256MB
- Virtual Memory auf fixed setzen -> Memory * 2 + 256MB
Mit folgenden Befehlen kann der "Full Memory Dump" aktiviert werden und das Virtual Memory auf fixed gesetzt werden
Nach dem ausführen des Befehls muss das System neugestartet werden.
# Set Registry-Settings Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name CrashDumpEnabled –value 1 Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name NMICrashDump –value 1 Remove-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name FilterPages # Check Total Memory Size for virtual Memory $MemoryInGB = [math]::Round((Get-Ciminstance Win32_OperatingSystem).TotalVisibleMemorySize/1mb,2) $MemoryInMB = $MemoryInGB * 1024 # Set virtual Memory to fixed and with the right Value (Memory * 2 + 256MB) $computersys = Get-WmiObject Win32_ComputerSystem -EnableAllPrivileges; $computersys.AutomaticManagedPagefile = $False; $computersys.Put(); $pagefile = Get-WmiObject -Query "Select * From Win32_PageFileSetting Where Name like '%pagefile.sys'"; $pagefile.InitialSize = ($MemoryInMB + 256); $pagefile.MaximumSize = ($MemoryInMB + 256); $pagefile.Put(); # Message Write-Host "To apply the settings reboot the system" -ForegroundColor Green
Dump generieren
- Der Dump wird automatisch beim nächsten Bluescreen erstellt.
- Dies kann mittels einem NMI auch forciert ausgeführt werden. (Siehe Bild)
- Eine weitere Möglichkeit wäre die NotMyFault64.exe von den Sysinternals-Tools auf das Zielsystem zu kopieren und diese auszuführen. Ähnlich wie NMI führt dies ebenfalls einen "Bluescreen" aus.
Quelle:
- https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/kernel-mode-dump-files
- https://blogs.msdn.microsoft.com/clustering/2015/05/18/windows-server-2016-failover-cluster-troubleshooting-enhancements-active-dump/
- https://blogs.technet.microsoft.com/askcore/2012/09/12/windows-8-and-windows-server-2012-automatic-memory-dump/