Memory Dump erstellen: Unterschied zwischen den Versionen

Aus Wiki-WebPerfect
Wechseln zu: Navigation, Suche
K
 
(24 dazwischenliegende Versionen des gleichen Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Datei:Memory-dump-size.png|right|500px]]
+
[[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>
 +
 
  
== Dump "Arten" ==
 
 
=== 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 FilterPages
 
 
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

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: