Memory Dump erstellen: Unterschied zwischen den Versionen

Aus Wiki-WebPerfect
Wechseln zu: Navigation, Suche
 
(11 dazwischenliegende Versionen des gleichen Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
[[Datei:Memory-dump-size.png|thumb|right|550px|Beispiel: Host mit 16GB Memory]]
 
[[Datei:Memory-dump-size.png|thumb|right|550px|Beispiel: Host mit 16GB Memory]]
''Bevor die Memory Dumps aktiviert werden bzw. die Registry-Setting geändert werden, empfehle ich die aktuellen Settings zu merken um dies danach wieder rückgängig zu machen.''
+
'''<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:)==
 
<source lang="powershell">Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\CrashControl –Name DumpFile –value X:\MEMORY.DMP</source>
 
<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 ==
 
== 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.
Zeile 15: Zeile 28:
  
 
=== Full Memory Dump ===
 
=== Full Memory Dump ===
Mit folgenden Befehlen kann der "Full Memory Dump" aktiviert werden. Nach dem ausführen des Befehls muss das System neugestartet werden.
+
==== 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
 
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>
  
Zeile 25: Zeile 62:
 
== Dump generieren ==
 
== Dump generieren ==
 
[[Datei:Ilo-nmi.png|800px|right]]<br>
 
[[Datei:Ilo-nmi.png|800px|right]]<br>
 +
[[Datei:02-Huawei.png|800px|right]]<br>
 
*Der Dump wird automatisch beim nächsten Bluescreen erstellt.
 
*Der Dump wird automatisch beim nächsten Bluescreen erstellt.
 
*Dies kann mittels einem ''NMI'' auch forciert ausgeführt werden. (Siehe Bild)
 
*Dies kann mittels einem ''NMI'' auch forciert ausgeführt werden. (Siehe Bild)
Zeile 30: Zeile 68:
  
  
''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

Beispiel: Host mit 16GB Memory

Bevor die Memory Dumps aktiviert werden bzw. die Registry-Setting geändert werden, empfehle ich die aktuellen Settings zu merken.

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

Ilo-nmi.png

02-Huawei.png

  • 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: