Vollständiges Speicherabbild unter Windows – Gehasst, verdammt, vergöttert
// September 22nd, 2010 // IT, Tutorials
Für das Debugging des Betriebssystems oder darauf laufender Anwendungen, kann es u.U. notwendig sein, ein vollständiges Speicherabbild erstellen zu lassen (bei Crash) oder selbst eines zu erstellen (beim Einfrieren der Anwendung / des OS).
Die Konfiguration für die Abbilder in Windows erreicht man über die Systemeigenschaften (Rechtsklick Arbeitsplatz / Computer > Eigenschaften oder über WIN+Pause). Unter dem Tab Erweitert > Starten und Wiederherstellen > Eigenschaften bekommen wir nun das Fenster angezeigt unter welchem man die Art der Debuginformationen einstellen kann.
Die drei möglichen Optionen
- Kleines Speicherabbild
Aufgrund der Größe des Speicherabbilds von 64K sind dort lediglich folgende Informationen enthalten:- Die Stop-Meldung, deren Parameter und weitere Daten
- Eine Liste der geladenen Treiber
- Den Prozessorkontext (PRCB) für den Prozessor, der angehalten wurde
- Die Prozessdaten und den Kernelkontext (EPROCESS) für den Prozess, der beendet wurde
- Die Prozessdaten und den Kernelkontext (ETHREAD) für den Thread, der beendet wurde
- Die Kernelmodus-Aufrufliste für den Thread, der beendet wurde
- Vollständiges Speicherabbild
Hier wird der komplette Inhalt des Arbeitsspeichers in das Abbild geschrieben. So kann der Dump, abhänging von der Größe physikalischen Speichers, mehrere Gigabyte groß werden. Hier sind sämtliche Informationen zur Speichernutzung, laufenden Prozessen, Treibern, etc. enthalten, die einem eine erweiterte Analyse ermöglichen. - Kernelspeicher-Abbild
Im Kernelspeicher-Abbild werden nur Informationen zum Kernel und des Hadware Abstraction Layer hinterlegt und ist damit deutlich kleiner als das vollständige Speicherabbild. Werden jedoch Informationen zu Programmen, etc. benötigt, ist dieses Abbild nicht ausreichend.
Standardoptionen für Abbildtypen
- Windows 2000 Professional: Kleines Speicherabbild (64 KB)
- Windows 2000 Server: Vollständiges Speicherabbild
- Windows 2000 Advanced Server: Vollständiges Speicherabbild
- Windows XP (Professional und Home Edition): Kleines Speicherabbild (64 KB)
- Windows Server 2003 (Alle Versionen): Vollständiges Speicherabbild
- Windows Server 2003: Kernelspeicher-Abbild
Voraussetzungen
Um ein vollständiges Speicherabbild zu erstellen, sind ein paar Voraussetzungen erforderlich. Hierzu gehört, dass auf der Systempartition eine Auslagerungsdatei liegt, die mindestens 1 MB größer ist, als der physikalische Speicher. Hat man also z.B. 2048 MB Speicher im Rechner verbaut, muss die Auslagerungsdatei auf der Systempartition mindestens 2049 MB groß sein. Da nicht immer genügend Platz auf der Systempartition vorhanden ist, gibt es ab Windows Vista und Windows Server 2008 eine Möglichkeit, die Auslagerungsdatei und den Dump auf eine andere Partition schreiben zu lassen. Dazu weiter unten mehr.
Hat ein System mehr als 2 GB Arbeitsspeicher, ist die Option "Vollständiges Speicherabbild" nicht mehr verfügbar. Wie dieses jedoch wieder aktiviert werden kann, habe ich unten genauer erklärt.
Für die Erstellung eines Kernelspeicherabbilds muss auf einem Rechner mit bis zu 1373 MB Ram die Auslagerungsdatei das 1,5-fache des RAMs betragen. Ab 1374 MB Speicher muss die Auslagerungsdatei mindestens 2060 MB groß sein.
Standardmäßiger Speicherort
Die geschriebenen Dumps werden standardmäßig unter folgenden Verzeichnissen abgelegt:
- Vollständiges Speicherabbild: C:\Windows\MEMORY.DMP
- Kernelspeicherabbild: C:\Windows\MEMORY.DMP
- Kleines Speicherabbild: C:\Windows\Minidump\*.DMP (z.B. C:\Windows\Minidump\Mini092010-01.dmp)
Soll der Speicherort geändert werden, kann dies in dem gleichen Fenster durchgeführt werden, in welchem auch die Auswahl zwischen den verschiedenen Dumparten konfiguriert wird.
Maximale Größe der Auslagerungsdatei
Die maximale Größe der Auslagerungsdatei ist von der Systemarchitektur des Betriebssystems beschränkt:
- Maximale Größe der Auslagerungsdatei
- x86: 4 GB
- x64: 16 TB
- IA64: 32 TB
- Maximale Anzahl der Auslagerungsdateien
- x86: 16
- x64: 16
- IA64: 16
- Gesamtgröße der Auslagerungsdateien
- x86: 64 GB
- x64: 256 TB
- IA64: 512 TB
Aktivieren von vollständigen Speicherabbildern unter Systemen mit mehr als 2 GB RAM
Ab einer bestimmten Größe des Arbeitsspeichers, bietet Windows die Option zur Erstellung eines vollständigen Speicherabbilds nicht mehr automatisch an - 2 GB RAM bei x86 Systemen und 4 GB RAM bei x64 Systemen. Hier kann jedoch über die Änderung eines Registrywerts nachgeholfen werden. Dazu muss lediglich der Wert für "CrashDumpEnabled" im Schlüssel "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" von 2 auf 1 gesetzt werden. Für die Übernahme der Einstellung ist kein Neustart erforderlich.
Ändern des Speicherorts für das Speicherabbild und die Auslagerungsdatei unter Vista und Windows Server 2008
Ab Vista bzw. Windows Server 2008 muss die Auslagerungsdatei nicht zwangsläufig auf der Systempartition liegen. Um diese neue Funktionalität zu nutzen, muss der Wert "DedicatedDumpFile" im Schlüssel "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl" gesetzt werden. Der Typ für den neuen Wert ist "Zeichenfolge". Der Inhalt dieses Werts sollte den kompletten Pfad zu der neuen Auslagerungsdatei beinhalten (z.B. E:\external-pagefile.sys):
Außerdem hat man die Möglichkeit, den Wert der neuen Auslagerungsdatei über den Wert "DumpFileSize" (Datentyp DWord) in der Registry in MB anzugeben. Anschließend kann noch der Speicherort für das Dumpfile im Wert "DumpFile" geändert werden.
Manuelles Erstellen eines Speicherabbilds
Wenn das Betriebssystem 'einfriert', wird das Speicherabbild nicht automatisch erstellt. Hier kann es also hilfreich sein, das Abbild manuell zu generieren. Hierzu bietet Windows die Erstellung mittels Tastenkürzel an. Die Aktivierung dieses Features ist jedoch davon abhängig, ob eine USB- oder PS2-Tastatur verwendet wird. Nach dem Setzen der entsprechenden Registrywerte ist ein Neustart des Betriebssystems erforderlich, um die Funktionalität nutzen zu können. Nachdem der Rechner neu gestartet wurde, wird das Speicherabbild erstellt, sobald die rechte STRG-Taste gehalten und zwei Mal Rollen (Scroll lock) gedrückt wird.
Bei der Auswertung der Dumps erscheint dann der PS2- bzw. USB-Tastaturtreiber als Verursacher.
Aktivieren des manuellen Speicherabbilds via PS2-Tastatur
Um das manuelle Erstellen eines Speicherabbilds zu aktivieren, muss in dem Registryschlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters ein neuer Dword-Wert "CrashOnCtrlScroll" angelegt werden. Der Wertinhalt muss auf 1 gesetzt werden.
Aktivieren des manuellen Speicherabbilds via USB-Tastatur
Möchte man eine USB-Tastatur verwenden, muss im Registryschlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters der Dword-Wert CrashOnCtrlScroll angelegt und der Wertinhalt auf 1 gesetzt werden.
Notebooks
Bei Notebooks, die für die Aktivierung der Scroll-Taste eine Funktionstaste (meist FN) benötigen, steht diese Option nicht zur Verfügung. Hier kann jedoch eine USB-Tastatur verwendet werden.
Ändern der Tasten für die Erstellung des manuellen Speicherabbilds
Ab und an kann es sein, dass die voreingestellten Tasten nicht verwendet werden können. Hier bietet sich die Möglichkeit an, die Tasten selbst zu belegen. Dazu muss unter dem Schlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt (bei einer PS2-Tastatur) bzw. unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid (bei einer USB-Tastatur) der Schlüssel crashdump angelegt werden. Hier legt man nun zwei Dword-Werte mit den Namen "Dump1Keys" und "Dump2Key" an.
Dump1Keys
beinhaltet den Wert für die Taste, die beim Drücken der zweiten Taste gehalten werden muss. Folgende Werte sind möglich (Hex-Werte):
- Rechte Shift Taste: 01
- Rechte STRG Taste: 02
- Rechte ALT Taste: 04
- Linke Shift Taste: 10
- Linke STRG Taste: 20
- Linke ALT Taste: 40
Diese Tasten kann man num kombinieren, in dem man die Werte addiert. Die Kombination aus linker Shift und rechter ALT-Taste wäre somit der Wert 14.
Dump2Key
Hier wird der Wert für die Taste angegeben, die später zwei Mal gedrückt werden muss, um das Speicherabbild zu erzeugen. SPACE hat hier z.B. den Wert "3d". Der Eintrag "Dump2Key" ist der Index in der Scancode-Tabelle für das Tastaturlayout. Nachfolgend ist die tatsächliche Tabelle im Treiber aufgeführt. Eine aktuelle Liste der Tasten-Werte kann ich leider zum aktuellen Zeitpunkt noch nicht bereitstellen, da sei mir selbst fehlt. Wer jedoch aus der unten stehenden Tabelle schlau wird, kann sich gerne bei mir melden. ![]()
const UCHAR keyToScanTbl[134] = {
0x00,0x29,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
0x0A,0x0B,0x0C,0x0D,0x7D,0x0E,0x0F,0x10,0x11,0x12,
0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x00,
0x3A,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,
0x27,0x28,0x2B,0x1C,0x2A,0x00,0x2C,0x2D,0x2E,0x2F,
0x30,0x31,0x32,0x33,0x34,0x35,0x73,0x36,0x1D,0x00,
0x38,0x39,0xB8,0x00,0x9D,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xD2,0xD3,0x00,0x00,0xCB,
0xC7,0xCF,0x00,0xC8,0xD0,0xC9,0xD1,0x00,0x00,0xCD,
0x45,0x47,0x4B,0x4F,0x00,0xB5,0x48,0x4C,0x50,0x52,
0x37,0x49,0x4D,0x51,0x53,0x4A,0x4E,0x00,0x9C,0x00,
0x01,0x00,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,
0x43,0x44,0x57,0x58,0x00,0x46,0x00,0x00,0x00,0x00,
0x00,0x7B,0x79,0x70 };Ähnliche Beiträge:
- Ausgeblendete Geräte im Windows Gerätemanager anzeigen
- Dual Boot bei Windows Vista und Server 2008
- Windows Sicherheitscenter per Registry konfigurieren
- [Tutorial] RDP-TCP-Verbindung remote einrichten
- Windows Defender deaktivieren






Super danke! Der Artikel ist echt hilfreich! Hatte bei mir auch das Problem, dass der Button für Vollständiges Speicherabbild nicht verfügbar war. Vielen dank für die Anleitung!
Hallo, danke für die tolle Anleitung. Nur ein Frage:
Wenn ich für ein manuelles Speicherabbild eine neue Tastenkombi festlege, muß ich dann das Dword 'crashonctrlscroll' weglassen oder muß ich das zusätzlich noch anlegen?
Viele Grüße,
Gany