Fichiers CAB contenant des fichiers de pagination ainsi qu’un vidage de mémoire

Un fichier de vidage de mémoire peut être placé dans un fichier CAB (Armoire) avec des fichiers de pagination. Lorsqu’un débogueur Windows analyse le fichier de vidage de mémoire, il peut utiliser les fichiers de pagination pour présenter une mémoire d’affichage complet, y compris la mémoire qui a été paginée lors de la création du fichier de vidage.

Supposons qu’un fichier CAB nommé MyCab.cab contienne ces fichiers :

Memory.dmp Cabmanifest.xml Pagefile.sys Supposez également que Cabmanifest.xml ressemble à ceci :

<?xml version="1.0" encoding="UTF-8"?>
<WatsonPageFileManifest>
  <Pagefiles>
    <Pagefile Name="pagefile.sys"></Pagefile>
  </Pagefiles>
</WatsonPageFileManifest>

Vous pouvez ouvrir le fichier CAB en entrant l’une des commandes suivantes :

  • windbg /z MyCab.cab
  • kd /z MyCab.cab

Le débogueur lit Cabmanifest.xml pour obtenir une liste de fichiers de pagination qui doivent être inclus dans la session de débogage. Dans cet exemple, il n’existe qu’un seul fichier de pagination. Le débogueur convertit le fichier de pagination en fichier TIF (Target Information File) qu’il peut utiliser pendant la session de débogage. Étant donné que le débogueur a accès au TIF, il peut afficher la mémoire qui a été paginée au moment de la création du fichier de vidage.

Quel que soit le nombre de fichiers de pagination dans le fichier CAB, le débogueur utilise uniquement les fichiers de pagination répertoriés dans Cabmanifest.xml. Voici un exemple de fichier manifeste CAB qui répertorie trois fichiers de pagination.

<?xml version="1.0" encoding="UTF-8"?>
<WatsonPageFileManifest>
  <Pagefiles>
    <Pagefile Name="pagefile1.sys"></Pagefile>
    <Pagefile Name="pagefile2.sys"></Pagefile>
    <Pagefile Name="swapfile.sys"></Pagefile>
  </Pagefiles>
</WatsonPageFileManifest>

Dans Cabmanifest.xml, les fichiers de pagination doivent être répertoriés dans le même ordre que windows les utilise. Autrement dit, ils doivent être répertoriés dans l’ordre dans lequel ils apparaissent dans le Registre.

Le fichier de vidage de mémoire que vous placez dans le fichier CAB doit être un vidage de mémoire complet. Vous pouvez utiliser Panneau de configuration pour configurer Windows afin de créer un vidage de mémoire complet en cas de blocage. Par exemple, dans Windows 8 vous pouvez accéder à Panneau de configuration > Paramètres > système avancés du système et de > la sécurité > Démarrage et récupération. En guise d’alternative à l’utilisation de Panneau de configuration, vous pouvez définir la valeur de cette entrée de Registre sur 1.

HKLM\SYSTÈME\Currentcontrolset\Contrôle\CrashControl\CrashDumpEnabled

À partir de Windows 8.1, vous pouvez configurer Windows pour conserver le contenu des fichiers de pagination lors du redémarrage de Windows.

Pour spécifier que vous souhaitez que les fichiers de pagination soient enregistrés lors du redémarrage de Windows, définissez la valeur de cette entrée de Registre sur 1.

HKLM\SYSTÈME\Currentcontrolset\Contrôle\CrashControl\SavePageFileContents