Installation et configuration de WinDBG pour analyser les vidages de mémoire. Outils de débogage Windows : diagnostiquer et réparer les outils de débogage BSOD pour l'utilisation de Windows

Lorsqu'une panne critique se produit, le système d'exploitation Windows se bloque et affiche un écran bleu de la mort (BSOD). Contenu mémoire vive et toutes les informations sur l'erreur qui se produit sont écrites dans le fichier d'échange. La prochaine fois démarrer Windows un crash dump est créé c informations de débogage basé sur les données stockées. Une entrée d'erreur critique est créée dans le journal des événements système.

Attention! Un vidage sur incident n'est pas créé si le sous-système de disque tombe en panne ou si une erreur critique se produit lors de la phase initiale du démarrage de Windows.

Types de vidages sur incident Windows

En utilisant le système d'exploitation actuel Windows 10 comme exemple ( Serveur Windows 2016) considèrent les principaux types de vidages de mémoire que le système peut créer :

  • Mini dump mémoire(256 Ko). Ce type de fichier contient une quantité minimale d'informations. Il contient uniquement le message d'erreur BSOD, des informations sur les pilotes, les processus actifs au moment du crash et le processus ou le thread du noyau qui a provoqué le crash.
  • Vidage de la mémoire du noyau. Généralement de petite taille : un tiers de la taille de la mémoire physique. Un vidage de la mémoire du noyau est plus détaillé qu'un mini-vidage. Il contient des informations sur les pilotes et les programmes en mode noyau, inclut la mémoire allouée au noyau Windows et à la couche d'abstraction matérielle (HAL), ainsi que la mémoire allouée aux pilotes et autres programmes en mode noyau.
  • Vidage mémoire complet. Le plus grand en taille et nécessite une mémoire égale à la RAM de votre système plus 1 Mo requis par Windows pour créer ce fichier.
  • Vidage automatique de la mémoire. Correspond à un dump mémoire du noyau en termes d'informations. La seule différence réside dans la quantité d'espace utilisée pour créer le fichier de vidage. Ce type de fichier n'existait pas sous Windows 7. Il a été ajouté dans Windows 8.
  • Vidage de la mémoire active. Ce type élimine les éléments qui ne peuvent pas déterminer la cause d'une panne du système. Ceci a été ajouté à Windows 10 et est particulièrement utile si vous utilisez une machine virtuelle ou si votre système est un hôte Hyper-V.

Comment activer le dumping de la mémoire sous Windows ?

À l'aide de Win+Pause, ouvrez la fenêtre des paramètres système, sélectionnez " Options supplémentaires systèmes"(Réglages avancés du système). Dans le " En plus" (Avancé), section "" (Démarrage et récupération) cliquez sur le bouton " Possibilités"(Paramètres). Dans la fenêtre qui s'ouvre, configurez les actions à entreprendre en cas de panne du système. Vérifier la " Consigner les événements dans le journal système" (Écrire un événement dans le journal système), sélectionnez le type de vidage qui doit être créé lorsque le système plante. Si dans la case " Remplacer le fichier de vidage existant"(Écraser tout fichier existant) cochez la case, le fichier sera écrasé à chaque échec. Il est préférable de décocher cette case, vous aurez alors plus d’informations pour l’analyse. Désactivez également le redémarrage automatique.

Dans la plupart des cas, un petit dump mémoire suffira pour analyser la cause du BSOD.

Désormais, lorsqu'un BSOD se produit, vous pouvez analyser le fichier de vidage et trouver la cause de l'échec. Le mini-dump est enregistré par défaut dans le dossier %systemroot%\minidump. Pour analyser le fichier dump, je recommande d'utiliser le programme WinDBG(Débogueur du noyau Microsoft).

Installation de WinDBG sous Windows

Utilitaire WinDBG inclus dans " Kit de développement logiciel Windows 10"(SDK Windows 10). .

Le fichier s'appelle winsdksetup.exe, taille 1,3 Mo.

Exécutez l'installation et choisissez exactement ce que vous voulez faire : installez le package sur cet ordinateur ou téléchargez-le pour l'installer sur d'autres ordinateurs. Installons le package sur l'ordinateur local.

Vous pouvez installer l'intégralité du package, mais pour installer uniquement l'outil de débogage, sélectionnez Outils de débogage pour Windows.

Après l'installation, les raccourcis WinDBG se trouvent dans le menu Démarrer.

Configuration de l'association de fichiers .dmp avec WinDBG

Pour ouvrir les fichiers de vidage d'un simple clic, mappez l'extension .dmp à l'utilitaire WinDBG.

  1. Ouvrir ligne de commande en tant qu'administrateur et exécutez les commandes pour un système 64 bits : cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    pour un système 32 bits :
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. Par conséquent, les types de fichiers : .DMP, .HDMP, .MDMP, .KDMP, .WEW seront mappés sur WinDBG.

Configuration d'un serveur de symboles de débogage dans WinDBG

Les symboles de débogage (symboles de débogage ou fichiers de symboles) sont des blocs de données générés lors de la compilation d'un programme avec le fichier exécutable. Ces blocs de données contiennent des informations sur les noms de variables, appelées fonctions, bibliothèques, etc. Ces données ne sont pas nécessaires lors de l'exécution du programme, mais sont utiles lors de son débogage. Les composants Microsoft sont compilés avec des symboles distribués via Microsoft Symbol Server.

Configurez WinDBG pour Utilisation de Microsoft Serveur de symboles :

  • Ouvrez WinDBG ;
  • Aller au menu Déposer –> Chemin du fichier de symboles ;
  • Écrivez une ligne contenant l'URL de téléchargement des symboles de débogage depuis le site de Microsoft et le dossier de sauvegarde du cache : SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols Dans l'exemple, le cache est téléchargé dans le dossier E:\Sym_WinDBG, vous pouvez en indiquer n'importe lequel.
  • N'oubliez pas d'enregistrer les modifications apportées au menu Déposer–>Enregistrez WorkSpace ;

WinDBG recherchera les symboles dans le dossier local et, s'il n'y trouve pas les symboles nécessaires, il téléchargera automatiquement les symboles depuis le site spécifié. Si vous souhaitez ajouter votre propre dossier de symboles, vous pouvez le faire comme ceci :

SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:\Symbols

Si vous ne disposez pas d'une connexion Internet, téléchargez d'abord le package de symboles à partir de la ressource Windows Symbol Packages.

Analyse d'un crash dump dans WinDBG

Le débogueur WinDBG ouvre le fichier de vidage et télécharge les symboles nécessaires au débogage à partir d'un dossier local ou depuis Internet. Vous ne pouvez pas utiliser WinDBG pendant ce processus. En bas de la fenêtre (dans la ligne de commande du débogueur) le message apparaît Le débogueur n'est pas connecté.

Les commandes sont saisies dans la ligne de commande située en bas de la fenêtre.

La chose la plus importante à laquelle il faut prêter attention est le code d'erreur, qui est toujours indiqué en hexadécimal et a la forme 0xXXXXXXXXX(indiqué dans l'une des options - STOP : , 07/02/2019 0008F, 0x8F). Dans notre exemple, le code d'erreur est 0x139.

Le débogueur propose d'exécuter la commande !analyze -v, passez simplement votre souris sur le lien et cliquez. A quoi sert cette commande ?

  • Il effectue une analyse préliminaire du vidage de la mémoire et fournit des informations détaillées pour démarrer l'analyse.
  • Cette commande affichera le code STOP et le nom symbolique de l'erreur.
  • Il montre la pile d'appels de commandes qui ont conduit au crash.
  • De plus, l'adresse IP, les défauts de processus et de registre sont affichés ici.
  • L'équipe peut fournir des recommandations toutes faites pour résoudre le problème.

Les principaux points auxquels vous devez prêter attention lors de l'analyse après l'exécution de la commande !analyze –v (liste incomplète).

1 : kd> !analyser -v


* *
* Analyse de bugcheck *
* *
*****************************************************************************
Nom symbolique de l'erreur STOP (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Description de l'erreur (Un composant du noyau a corrompu une structure de données critique. Cette corruption pourrait potentiellement permettre à un attaquant de prendre le contrôle de cette machine) :

Un composant du noyau a corrompu une structure de données critique. La corruption pourrait potentiellement permettre à un utilisateur malveillant de prendre le contrôle de cette machine.
Arguments d'erreur :

Arguments:
Arg1 : 0000000000000003, A LIST_ENTRY a été corrompu (c'est-à-dire double suppression).
Arg2 : ffffd0003a20d5d0, adresse de la trame d'interruption pour l'exception qui a provoqué la vérification du bug
Arg3 : ffffd0003a20d528, adresse de l'enregistrement d'exception pour l'exception qui a provoqué la vérification du bug
Arg4 : 0000000000000000, réservé
Détails du débogage :
------------------

Le compteur indique combien de fois le système s'est écrasé avec une erreur similaire :

CUSTOMER_CRASH_COUNT : 1

DEFAULT_BUCKET_ID : FAIL_FAST_CORRUPT_LIST_ENTRY

Code d'erreur STOP au format raccourci :

BUGCHECK_STR : 0x139

Le processus au cours duquel l'échec s'est produit (pas nécessairement la cause de l'erreur, juste au moment de l'échec, ce processus était en cours d'exécution en mémoire) :

PROCESS_NAME : sqlservr.exe

Description du code d'erreur : le système a détecté un dépassement de tampon de pile dans cette application, ce qui pourrait permettre à un attaquant de prendre le contrôle de cette application.

ERROR_CODE : (NTSTATUS) 0xc0000409 - Le système a détecté un dépassement d'un tampon basé sur la pile dans cette application. Ce dépassement pourrait potentiellement permettre à un utilisateur malveillant de prendre le contrôle de cette application.
EXCEPTION_CODE : (NTSTATUS) 0xc0000409 - Le système a détecté un dépassement d'un tampon basé sur la pile dans cette application. Ce dépassement pourrait potentiellement permettre à un utilisateur malveillant de prendre le contrôle de cette application.

Dernier appel sur la pile :

LAST_CONTROL_TRANSFER : de fffff8040117d6a9 à fffff8040116b0a0

Pile d'appels au moment de l'échec :

STACK_TEXT :
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20d528: nt!KeBugCheckEx
ffffd000`3a20d2b0 fffff804`0117da50 : ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2 : nt!KiBugCheckDispatch+0x69
ffffd000`3a20d3f0 fffff804`0117c150 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiFastFailDispatch+0xd0
ffffd000`3a20d5d0 fffff804`01199482 : ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9 : nt!KiRaiseSecurityCheckFailure+0x3d0
ffffd000`3a20d760 fffff804`014a455d : 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951 : non ! ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac : 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a34c600 : nt!IopSynchronousServiceTail+0x379
ffffd000`3a20d990 fffff804`0117d313 : ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380 : nt!NtWriteFile+0x694
ffffd000`3a20da90 00007ffb`475307da : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x1 3
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: 0x00007ffb`47530 7da

La section de code où l'erreur s'est produite :

FOLLOWUP_IP :
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov octet ptr ,0
FAULT_INSTR_CODE : 202444c6
SYMBOL_STACK_INDEX : 2
SYMBOL_NAME : nt!KiFastFailDispatch+d0
FOLLOWUP_NAME : propriétaire de la machine

Le nom du module dans la table des objets du noyau. Si l'analyseur a pu détecter conducteur problématique, le nom est affiché dans les champs MODULE_NAME et IMAGE_NAME :

MODULE_NAME : nt
IMAGE_NAME : ntkrnlmp.exe

1 : kd> lmvm nt
Parcourir la liste complète des modules
Fichier image du symbole chargé : ntkrnlmp.exe
Fichier image mémoire mappé : C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Chemin de l'image : ntkrnlmp.exe
Nom de l’image : ntkrnlmp.exe
Nom interne : ntkrnlmp.exe
Nom de fichier d'origine : ntkrnlmp.exe
Version du produit : 6.3.9600.18946
Version du fichier : 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

Dans l'exemple donné, l'analyse a pointé vers le fichier du noyau ntkrnlmp.exe. Lorsque l'analyse du vidage mémoire pointe vers un pilote système (tel que win32k.sys) ou un fichier noyau (comme dans notre exemple ntkrnlmp.exe), il est fort probable que ce fichier n'est pas la cause du problème. Très souvent, il s'avère que le problème réside dans le pilote de périphérique, Paramètres du BIOS ou un dysfonctionnement de l'équipement.

Si vous voyez que le BSOD a été provoqué par un pilote tiers, son nom sera indiqué dans les valeurs MODULE_NAME et IMAGE_NAME.

Par exemple:

Chemin de l'image : \SystemRoot\system32\drivers\cmudaxp.sys
Nom de l’image : cmudaxp.sys

Ouvrez les propriétés du fichier du pilote et vérifiez sa version. Dans la plupart des cas, le problème des pilotes est résolu en les mettant à jour.

le 22 juin 2010

Auparavant, Windbg était disponible séparément en téléchargement. Mais pour les dernières versions, Microsoft les conserve dans le cadre du SDK Windows. Veuillez trouver les liens de téléchargement ci-dessous.

Windows 10

La dernière version de Windbg pour Windows 7 peut être téléchargée à partir du lien https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Windows 7

Téléchargez les programmes d'installation à partir des liens ci-dessus. Notez que cela ne télécharge pas l’intégralité du SDK, c’est juste un programme d’installation. Une fois que vous exécutez le fichier, tu peux sélectionnez les outils que vous souhaitez télécharger. Si vous n'êtes intéressé que par Windbg, vous pouvez exclure tout le reste et sélectionner uniquement « Outils de débogage » sous « Utilitaires communs ».

Le package ci-dessus installe la version Windbg 6.12. Si vous souhaitez installer rapidement Windbg, vous pouvez opter pour une ancienne version (6.11) qui peut être téléchargée depuis
le lien donné à la fin de cet article.

Une fois l'installation effectuée, vous pouvez trouver le programme dans le menu Démarrer -> Tous les programmes -> Outils de débogage pour Windows -> Windbg.

Présentation de WinDBG - Partie 1

Alexandre Antipov

WinDBG est un excellent débogueur. Il n'a peut-être pas une interface très conviviale et n'a pas de fond noir par défaut, mais il s'agit actuellement de l'un des débogueurs les plus puissants et les plus stables sur le système d'exploitation Windows. Dans cet article, je vais vous présenter les bases de WinDBG afin que vous puissiez démarrer avec.


WinDBG est un excellent débogueur. Il n'a peut-être pas une interface très conviviale et n'a pas de fond noir par défaut, mais il s'agit actuellement de l'un des débogueurs les plus puissants et les plus stables sur le système d'exploitation Windows. Dans cet article, je vais vous présenter les bases de WinDBG afin que vous puissiez démarrer avec.

Ceci est le premier article d'une série dédiée à WinDBG. Liste de tous les articles inclus dans cette série :

  • Partie 1 – installation, interface, symboles, débogage distant/local, système d'aide, modules, registres.
  • Partie 2 – points d'arrêt.
  • Partie 3 – inspection de la mémoire, débogage du programme étape par étape, trucs et astuces.

Dans cet article, nous examinerons l'installation et l'attachement à un processus, et dans les articles suivants, nous examinerons les points d'arrêt, le débogage étape par étape et l'inspection de la mémoire.

Installation de WinDBG

Par rapport à Windows 7, le processus d'installation de WinDBG dans Windows 8 a subi des modifications mineures. Dans cette section, nous examinerons l'installation d'un débogueur pour les deux systèmes d'exploitation.

Installation de WinDBG sur Windows 8

Sous Windows 8, WinDBG est inclus dans le kit de pilotes Windows (WDK). Vous pouvez installer Visual Studio et WDK, ou installer séparément le package Outils de débogage pour Windows 8.1, qui inclut WinDBG.

Le programme d'installation vous demandera si vous souhaitez installer WinDBG localement ou télécharger l'intégralité du package de développement pour un autre ordinateur. Ce dernier est essentiellement l'équivalent programme d'installation hors ligne, ce qui est très pratique si vous souhaitez installer le package sur d'autres systèmes à l'avenir.

Figure 1 : Sélection du type d'installation

Dans la fenêtre suivante, vous devez décocher tous les éléments sauf « Outils de débogage pour Windows » et cliquer sur le bouton « Télécharger ».

Une fois que le programme d'installation a terminé son travail, accédez au répertoire où le package a été téléchargé (par défaut c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) et suivez la procédure d'installation.

Installation de WinDBG sur Windows 7 et versions antérieures

Pour Windows 7 et versions antérieures, WinDBG fait partie du package « Outils de débogage pour Windows » inclus avec le SDK Windows et .Net Framework. Vous devrez télécharger le programme d'installation, puis sélectionner « Outils de débogage pour Windows » pendant le processus d'installation.

Lors de l'installation, je sélectionne l'option « Outils de débogage » sous « Packages redistribuables » pour créer un programme d'installation autonome afin de faciliter les installations futures.

Figure 2 : Sélection des options d'installation pour créer un programme d'installation autonome

Une fois l'installation terminée, vous devriez disposer d'installateurs WinDBG pour différentes plates-formes (dans le répertoire c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\).

Figure 3 : Dossier contenant les installateurs WinDBG pour différentes plates-formes

Interface WinDBG

Figure 4 : apparence de WinDBG

La première fois que tu vois apparence WinDGB, vous vous rendrez compte que le débogueur est d’une simplicité effrayante. La plupart des fonctions WinDBG sont apprises lors du débogage du processus. Au lieu de passer du temps à décrire l’interface, dans les sections suivantes, nous n’aborderons que les points les plus importants.

La chose la plus élémentaire que vous devez savoir sur l’interface du débogueur est la fenêtre de commande, qui se compose de deux zones. Première zone : une fenêtre où est affiché le résultat de l'exécution de la commande. Deuxième zone : un petit champ de texte pour saisir des commandes.

Figure 5 : Fenêtre de commande WinDBG

Symboles

Dans la plupart des cas, WinDBG ne nécessite aucun paramètre particulier et fonctionne correctement dès la sortie de la boîte. Mais une chose importante qui doit être configurée, ce sont les personnages. Les symboles sont des fichiers générés avec le fichier exécutable lors de la compilation d'un programme et contenant des informations de débogage (fonctions et noms de variables). Les informations de débogage vous permettent d'examiner les fonctionnalités d'une application lors du débogage ou du désassemblage. De nombreux composants Microsoft sont compilés avec des symboles distribués via Microsoft Symbol Server. Avec le reste des fichiers exécutables, tout n'est pas si rose - très rarement des fichiers contenant des informations de débogage sont inclus avec l'application. Dans la plupart des cas, les entreprises restreignent l'accès à ces informations.

Pour configurer WinDBG pour utiliser Microsoft Symbol Server, accédez à File:Symbol File Path et définissez le chemin sur SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Bien sûr, il est un peu étrange que des astérisques soient utilisés comme séparateur. Après avoir configuré Microsoft Symbol Server, les symboles seront téléchargés dans le dossier C:\Symbols.

Figure 6 : Configuration de Microsoft Symbol Server

WinDBG chargera automatiquement les symboles pour les fichiers binaires en cas de besoin. Vous pouvez également ajouter votre propre dossier de symboles, comme ceci :

SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder

Ajout de symboles lors du débogage

Si vous devez importer des symboles lors du débogage, vous pouvez le faire en utilisant .sympath (une fenêtre de commande apparaîtra lorsque vous vous connecterez au processus). Par exemple, pour ajouter le dossier c:\SomeOtherSymbolFolder, saisissez la commande suivante :

0:025> .sympath+ c:\SomeOtherSymbolFolder
Le chemin de recherche des symboles est : SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
Le chemin de recherche de symboles étendu est : srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

C'est une bonne idée de recharger les symboles après avoir ajouté ou modifié des chemins :

0:025> .recharger
Rechargement des modules actuels
................................................................
...............................................

Vérification des symboles chargés

Pour voir quels modules ont des symboles chargés, vous pouvez utiliser la commande x*!. Bien que WinDBG ne charge les symboles que si nécessaire, le x*! affichera les symboles qui peuvent être chargés. Vous pouvez forcer le chargement des symboles à l'aide de la commande ld * (cela peut prendre un certain temps et vous pouvez arrêter le processus en allant dans Debug:Break).

Nous pouvons maintenant voir les symboles de chaque module.

Figure 8 : Liste des symboles

Débogage d'un processus local

Lors du débogage d'un processus local, vous disposez de deux options :

  1. Accrochez-vous à un processus déjà en cours d’exécution.
  2. Démarrez le processus via WinDBG.

Chaque méthode a ses propres avantages et inconvénients. Si, par exemple, vous exécutez un programme via WinDBG, vous avez accès à certaines options de débogage spéciales (par exemple, le débogage du tas) qui peuvent provoquer le blocage de l'application. D'un autre côté, il existe également des programmes qui plantent lorsque vous leur attachez un débogueur. Certaines applications (en particulier les logiciels malveillants) vérifient la présence d'un débogueur dans le système au démarrage et, par conséquent, dans ce cas, il est logique de s'accrocher à un processus déjà en cours d'exécution. Parfois, vous déboguez un service Windows qui définit certains paramètres au démarrage. Par conséquent, pour simplifier le processus de débogage, il est également préférable de se connecter à un processus en cours plutôt que d'exécuter le service via un débogueur. Certaines personnes prétendent que l'exécution d'un processus via un débogueur a un impact sérieux sur les performances. Bref, essayez les deux et choisissez ce qui vous convient le mieux. Si pour une raison quelconque vous préférez une méthode particulière, partagez vos impressions dans les commentaires !

Démarrage du processus

Si vous déboguez une application autonome qui s'exécute localement et ne communique pas avec le réseau, vous souhaiterez peut-être l'exécuter via WinDBG. Cependant, cela ne signifie pas que vous ne pouvez pas vous connecter à un processus déjà en cours d’exécution. Choisissez la méthode qui vous convient le mieux.

Démarrer le processus n’est pas difficile. Allez dans "Fichier : Ouvrir l'exécutable" et sélectionnez le fichier exécutable que vous souhaitez déboguer. Vous pouvez également spécifier des arguments ou définir le répertoire de départ :

Figure 9 : Sélection fichier exécutable pour le débogage

Connexion au processus

La connexion à un processus déjà en cours d’exécution n’est pas non plus difficile. Cependant, sachez que dans certains cas, la recherche du processus exact que vous souhaitez déboguer peut prendre du temps. Par exemple, certains navigateurs créent un processus parent, puis plusieurs autres processus pour chaque onglet. Ainsi, en fonction du vidage sur incident que vous déboguez, vous souhaiterez peut-être vous connecter au processus associé à l'onglet plutôt qu'au processus parent.

Pour vous attacher à un processus déjà en cours d'exécution, accédez à « Fichier : Attacher à un processus », puis sélectionnez le PID ou le nom du processus. N'oubliez pas que vous devez disposer des droits appropriés pour rejoindre le processus.

Figure 10 : Sélection du processus auquel se connecter

Si après connexion, l'application met son fonctionnement en pause, vous pouvez utiliser le mode « Noninvaise » en cochant la case appropriée.

Débogage d'un processus distant

Vous devrez parfois déboguer un processus sur un système distant. Il serait beaucoup plus pratique de résoudre ce problème en utilisant un débogueur local, plutôt que d'utiliser machine virtuelle ou RDP. Ou peut-être êtes-vous en train de déboguer le processus LoginUI.exe, qui n'est accessible que lorsque le système est verrouillé. Dans de telles situations, vous pouvez utiliser une version locale de WinDBG et vous connecter aux processus à distance. Il existe deux manières les plus courantes de résoudre ces problèmes.

Sessions de débogage existantes

Si vous avez déjà commencé à déboguer un programme localement (en vous connectant ou en exécutant un processus via WinDBG), vous pouvez entrer une commande spécifique et WinDBG lancera un « écouteur » auquel le débogueur distant pourra se connecter. Pour ce faire, utilisez la commande .server :

Serveur TCP : port = 5005

Après avoir exécuté la commande ci-dessus, vous pouvez voir un avertissement comme celui-ci :

Figure 11 : Message d'avertissement pouvant apparaître après l'exécution de la commande de création d'un écouteur

WinDBG signalera alors que le serveur est en cours d'exécution :

0:005> .server tcp:port=5005
0: -tcp distant : Port = 5005, Serveur = UTILISATEUR-PC

Vous pouvez maintenant vous connecter depuis un hôte distant à une session de débogage existante en accédant à « Fichier : Se connecter à une session distante » et en entrant quelque chose comme ce qui suit dans le champ de texte : tcp:Port=5005,Server=192.168.127.138

Figure 12 : Connexion à distance à une session de débogage

Une fois connecté, vous recevrez une confirmation sur le client distant :


Le serveur a démarré. Le client peut se connecter avec n'importe laquelle de ces lignes de commande
0: -tcp distant : Port = 5005, Serveur = UTILISATEUR-PC
MACHINENAME\User (tcp 192.168.127.138:13334) connecté le lundi 16 décembre 09:03:03 2013

et le message dans la version locale du débogueur :

MACHINENAME\User (tcp 192.168.127.138:13334) connecté le lundi 16 décembre 09:03:03 2013

Création d'un serveur distant

Vous pouvez également créer un serveur séparé avec WinDBG, vous y connecter à distance et sélectionner un processus à déboguer. Cela peut être fait en utilisant le fichier dbgsrv.exe dans lequel vous envisagez de déboguer les processus. Pour démarrer un tel serveur, exécutez la commande suivante :

dbgsrv.exe -t tcp:port=5005

Figure 13 : Démarrage d'un serveur distant

Encore une fois, vous pouvez recevoir un avertissement de sécurité que vous devez accepter :

Figure 14 : Message de sécurité pouvant apparaître lors du démarrage du serveur de débogage

Vous pouvez vous connecter au serveur de débogage en accédant à Fichier : Se connecter au stub distant et en saisissant la ligne suivante dans le champ de texte : TCP : Port = 5005, Serveur = 192.168.127.138

Figure 15 : Connexion au serveur de débogage

Une fois connecté, vous ne recevrez aucun signal indiquant que vous êtes connecté, mais si vous allez dans « Fichier : Attacher à un processus », vous verrez une liste des processus du serveur de débogage (où dbgsrv.exe est en cours d'exécution). Vous pouvez désormais vous connecter au processus comme si vous le faisiez localement.

Système d'aide

Le système d'aide de WinDBG est génial. En plus d'apprendre quelque chose de nouveau, vous devriez pouvoir obtenir des informations générales sur une commande. Utilisez la commande .hh pour accéder à l'aide de WinDBG :

Vous pouvez également obtenir des informations d'aide pour une commande spécifique. Par exemple, pour obtenir de l'aide sur la commande .reload, utilisez la commande suivante :

ventbg> .hh .reload

Ou allez simplement dans la section Aide : Contenu.

Modules

Pendant l'exécution du programme, divers modules sont importés pour fournir les fonctionnalités de l'application. Par conséquent, si vous savez quels modules sont importés par l’application, vous pourrez mieux comprendre son fonctionnement. Dans de nombreux cas, vous déboguerez le module spécifique chargé par le programme, plutôt que le fichier exécutable lui-même.

Une fois connecté au processus, WinDBG affichera automatiquement les modules chargés. Par exemple, voici les modules après ma connexion à calc.exe :

Débogueur Microsoft (R) Windows version 6.12.0002.633 X86
Droit d'auteur (c) Microsoft Corporation. Tous droits réservés.

*** attendre avec pièce jointe en attente
Le chemin de recherche des symboles est : SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
Le chemin de recherche exécutable est :
ModLoad : 00a70000 00b30000 C:\Windows\system32\calc.exe
ModLoad : 77630000 7776c000 C:\Windows\SYSTEM32\ntdll.dll
ModLoad : 77550000 77624000 C:\Windows\system32\kernel32.dll
ModLoad : 75920000 7596a000 C:\Windows\system32\KERNELBASE.dll
ModLoad : 76410000 77059000 C:\Windows\system32\SHELL32.dll
ModLoad : 77240000 772ec000 C:\Windows\system32\msvcrt.dll
ModLoad : 76300000 76357000 C:\Windows\system32\SHLWAPI.dll
ModLoad : 75cd0000 75d1e000 C:\Windows\system32\GDI32.dll
ModLoad : 75fa0000 76069000 C:\Windows\system32\USER32.dll
ModLoad : 777b0000 777ba000 C:\Windows\system32\LPK.dll
ModLoad : 774b0000 7754d000 C:\Windows\system32\USP10.dll
ModLoad : 73110000 732a0000 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_
6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
ModLoad : 75a80000 75bdc000 C:\Windows\system32\ole32.dll
ModLoad : 76360000 76401000 C:\Windows\system32\RPCRT4.dll
ModLoad : 777c0000 77860000 C:\Windows\system32\ADVAPI32.dll
ModLoad : 75be0000 75bf9000 C:\Windows\SYSTEM32\sechost.dll
ModLoad : 76270000 762ff000 C:\Windows\system32\OLEAUT32.dll
ModLoad : 74590000 745d0000 C:\Windows\system32\UxTheme.dll
ModLoad : 74710000 748ae000 C:\Windows\WinSxS\x86_microsoft.windows.common-
ModLoad : 703d0000 70402000 C:\Windows\system32\WINMM.dll
ModLoad : 74c80000 74c89000 C:\Windows\system32\VERSION.dll
ModLoad : 77770000 7778f000 C:\Windows\system32\IMM32.DLL
ModLoad : 75c00000 75ccc000 C:\Windows\system32\MSCTF.dll
ModLoad : 74130000 7422b000 C:\Windows\system32\WindowsCodecs.dll
ModLoad : 74260000 74273000 C:\Windows\system32\dwmapi.dll
ModLoad : 756d0000 756dc000 C:\Windows\system32\CRYPTBASE.dll
ModLoad : 75e60000 75ee3000 C:\Windows\system32\CLBCatQ.DLL
ModLoad : 6ef10000 6ef4c000 C:\Windows\system32\oleacc.dll

Plus tard dans le processus de débogage, vous pourrez à nouveau afficher cette liste à l'aide de la commande lmf :

0:005>lmf
début fin nom du module
00a70000 00b30000 calc C:\Windows\system32\calc.exe
6ef10000 6ef4c000 oleacc C:\Windows\system32\oleacc.dll
703d0000 70402000 WINMM C:\Windows\system32\WINMM.dll
73110000 732a0000 gdiplus C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_
1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
74130000 7422b000 WindowsCodecs C:\Windows\system32\WindowsCodecs.dll
74260000 74273000 dwmapi C:\Windows\system32\dwmapi.dll
74590000 745d0000 UxTheme C:\Windows\system32\UxTheme.dll
74710000 748ae000 COMCTL32 C:\Windows\WinSxS\x86_microsoft.windows.common-
contrôles_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\COMCTL32.dll
74c80000 74c89000 VERSION C:\Windows\system32\VERSION.dll
756d0000 756dc000 CRYPTBASE C:\Windows\system32\CRYPTBASE.dll
75920000 7596a000 KERNELBASE C:\Windows\system32\KERNELBASE.dll
75a80000 75bdc000 ole32 C:\Windows\system32\ole32.dll
75be0000 75bf9000 sechost C:\Windows\SYSTEM32\sechost.dll
75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
76300000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
76360000 76401000 RPCRT4 C:\Windows\system32\RPCRT4.dll
76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
77550000 77624000 noyau32 C:\Windows\system32\kernel32.dll
77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
777b0000 777ba000 LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

Vous pouvez également connaître l'adresse de chargement d'un module spécifique à l'aide de la commande « lmf m » :

0:005> lmf m noyau32
début fin nom du module
77550000 77624000 noyau32 C:\Windows\system32\kernel32.dll

Vous pouvez également obtenir des informations sur l'en-tête de l'image d'un module particulier en utilisant l'extension!dh ( Point d'exclamation indique une extension) :

0:005> !dh noyau32

Type de fichier : DLL
VALEURS D'EN-TÊTE DE FICHIER
Appareil 14C (i386)
4 nombre de sections
4A5BDAAD horodatage lundi 13 juillet 21:09:01 2009

0 pointeur de fichier vers la table des symboles
0 nombre de symboles
Taille E0 de l'en-tête optionnel
2102 caractéristiques
Exécutable
Machine à mots 32 bits
DLL

VALEURS D'EN-TÊTE FACULTATIVES
10B magie #
Version de l'éditeur de liens 9h00
Taille du code C4600
Taille C800 des données initialisées
0 taille de données non initialisées
510C5 Adresse du point d'entrée
1000 codes de base
----- nouveau -----
77550000 bases d'images
Alignement de 1000 sections
200 alignements de fichiers
3 sous-système (Windows CUI)
Version du système d'exploitation 6.01
6.01 version illustrée
Version du sous-système 6.01
Taille de l'image D4000
800 tailles d'en-têtes
Somme de contrôle D5597
00040000 taille de réserve de pile
00001000 taille de validation de pile
00100000 taille de réserve de tas
00001000 taille de validation du tas
140 caractéristiques des DLL
Socle dynamique
Compatible NX
B4DA8 [A915] adresse du répertoire d'exportation
BF6C0 [ 1F4] adresse du répertoire d'importation
Adresse C7000 [520] du répertoire de ressources
0 [ 0] adresse du répertoire des exceptions
0 [ 0] adresse du répertoire de sécurité
Adresse C8000 [B098] du répertoire de réinstallation de la base
C5460 [ 38] adresse du répertoire de débogage
0 [ 0] adresse du répertoire de description
0 [ 0] adresse du répertoire spécial
0 [ 0] adresse du répertoire de stockage des threads
816B8 [ 40] adresse du répertoire de configuration de chargement
278 [408] adresse du répertoire d'importation lié
1000 [DE8] adresse du répertoire de la table d'adresses d'importation
0 [ 0] adresse du répertoire d'importation différée
0 [ 0] adresse du répertoire d'en-tête COR20
0 [ 0] adresse du répertoire réservé

EN-TÊTE DE SECTION #1
nom .text
Taille virtuelle C44C1
1000 adresses virtuelles
Taille C4600 des données brutes
800 pointeur de fichier vers les données brutes

0 nombre de déménagements
0 nombre de numéros de ligne
60000020 drapeaux
Code
(aucun alignement spécifié)
Exécuter la lecture

Répertoires de débogage (2)
Type Taille Adresse Pointeur
cv 25 c549c c4c9c Format : RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

EN-TÊTE DE SECTION #2
nom .data
Taille virtuelle FEC
Adresse virtuelle C6000
Taille E00 des données brutes
Pointeur de fichier C4E00 vers les données brutes
0 pointeur de fichier vers la table de relocalisation
0 pointeur de fichier vers les numéros de ligne
0 nombre de déménagements
0 nombre de numéros de ligne
C0000040 drapeaux
Données initialisées
(aucun alignement spécifié)
Lire écrire

EN-TÊTE DE SECTION #3
nom .rsrc
520 taille virtuelle
Adresse virtuelle C7000
Taille 600 de données brutes
Pointeur de fichier C5C00 vers les données brutes
0 pointeur de fichier vers la table de relocalisation
0 pointeur de fichier vers les numéros de ligne
0 nombre de déménagements
0 nombre de numéros de ligne
40000040 drapeaux
Données initialisées
(aucun alignement spécifié)
Lecture seulement

EN-TÊTE DE SECTION #4
nom .reloc
Taille virtuelle B098
Adresse virtuelle C8000
Taille B200 des données brutes
Pointeur de fichier C6200 vers les données brutes
0 pointeur de fichier vers la table de relocalisation
0 pointeur de fichier vers les numéros de ligne
0 nombre de déménagements
0 nombre de numéros de ligne
42000040 drapeaux
Données initialisées
Jetable
(aucun alignement spécifié)
Lecture seulement

Messages et exceptions

Après la connexion à un processus, une liste de modules s'affiche d'abord, puis d'autres messages peuvent apparaître. Par exemple, lorsque nous nous connectons à calc.exe, WinDBG définit automatiquement un point d'arrêt (qui est simplement un marqueur utilisé pour arrêter l'application). Les informations sur le point d'arrêt s'affichent à l'écran :

(da8.b44) : exception d'instruction de rupture - code 80000003 (première chance)

Ce message particulier est une exception, à savoir une exception de première chance. Essentiellement, une exception est une condition particulière qui se produit lors de l’exécution d’un programme. Une exception de première chance signifie que le programme s'est arrêté immédiatement après l'apparition de l'exception. L'exception de la deuxième chance signifie qu'une fois l'exception survenue, certaines opérations seront effectuées, puis le programme cessera de fonctionner.

Registres

Après avoir affiché les messages et exceptions, le débogueur affiche l'état des registres du processeur. Les registres sont des variables spéciales à l'intérieur du processeur qui stockent de petites informations ou surveillent l'état de quelque chose en mémoire. Le processeur peut traiter les informations contenues dans ces registres très rapidement. C'est beaucoup plus rapide que d'obtenir à chaque fois des informations via le bus depuis la RAM.

Après vous être connecté à calc.exe, WinDBG affiche automatiquement des informations sur les registres suivants :

eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246

Vous pourrez à nouveau dupliquer ces informations ultérieurement à l'aide de la commande r :

0:005>r
eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!DbgBreakPoint :
77663540 cm3 int 3

Si nous voulons obtenir la valeur d'un registre spécifique, nous pouvons exécuter la commande suivante :

0:005> réponse
eax=7ffd9000

Les informations peuvent être obtenues simultanément à partir de plusieurs registres comme suit :

0:005> r eax, ebp
eax=7ffd9000 ebp=02affdc8

Pointeur vers les instructions

La dernière commande concerne les instructions à exécuter. Ici, les informations sont également affichées à l'écran, comme dans le cas de la commande r, de ce que contient le registre EIP. EIP est un registre qui contient l'emplacement de la prochaine instruction à exécuter par le processeur. Ce que WinDBG affiche est l'équivalent de la commande u eip L1, après quoi WinDBG se rend à l'adresse spécifiée dans le registre EIP, convertit cette section en code assembleur et l'affiche à l'écran.

ntdll!DbgBreakPoint :
77663540 cm3 int 3

reste en contact

Dans les prochains articles, nous verrons comment utiliser WinDBG sur le terrain : points d'arrêt, débogage étape par étape et navigation dans la mémoire. Ne changez pas ! J.

Outils de débogage pour Windows- Outils de débogage du code d'exploitation Systèmes Windows. Il s'agit d'un ensemble de programmes distribués gratuitement par Microsoft, conçus pour déboguer le code du mode utilisateur et du mode noyau : applications, pilotes, services, modules du noyau. La boîte à outils comprend des débogueurs en mode console et GUI, des utilitaires pour travailler avec des symboles, des fichiers, des processus et des utilitaires pour le débogage à distance. La boîte à outils contient des utilitaires qui peuvent être utilisés pour rechercher les causes des pannes de divers composants du système. Outils de débogage pour Windowsà partir d'un certain point, ne sont plus disponibles au téléchargement sous la forme d'une distribution autonome et font partie du Windows SDK (Windows Software Development Kit). Ensemble d'instruments Outils Windows Le SDK, à son tour, est disponible dans le cadre du programme d'abonnement MSDN ou peut être téléchargé gratuitement en tant que distribution distincte à partir de msdn.microsoft.com. Selon les développeurs, les dernières et les plus version actuelle Les outils de débogage pour Windows sont contenus spécifiquement dans le SDK Windows.

Les outils de débogage pour Windows sont mis à jour et rendus publics assez souvent et ce processus ne dépend en aucun cas de la version des systèmes d'exploitation. Par conséquent, vérifiez périodiquement les nouvelles versions.

Voyons maintenant à quoi servent en particulier les outils de débogage pour Microsoft Windows:

  • Déboguer les applications, services, pilotes et noyau locaux ;
  • Déboguer les applications, services, pilotes et noyau distants sur le réseau ;
  • Déboguer les applications en cours d'exécution en temps réel ;
  • Analyser les fichiers de vidage mémoire des applications, du noyau et du système dans son ensemble ;
  • Travailler avec des systèmes basés sur des architectures x86/x64/Itanium ;
  • Déboguer les programmes en mode utilisateur et en mode noyau ;

Les versions suivantes des outils de débogage pour Windows sont disponibles : 32 bits x86, Intel Itanium, 64 bits x64. Nous en aurons besoin de deux : x86 ou x64.

Il existe plusieurs façons d'installer les outils de débogage pour Windows ; dans cet article, nous ne considérerons que les principales :

  • Installation via l'installateur Web.
  • Installation des outils de débogage pour Windows à partir de l'ISO Image Windows SDK.
  • Installation des outils de débogage pour Windows directement à partir des packages dbg_amd64.msi / dbg_x86.msi.

On ne sait pas encore à quel moment pourquoi devrais-je installer des outils de débogage sur mon ordinateur ? Vous êtes souvent confronté à une situation où l'interférence dans l'environnement de travail est extrêmement indésirable ! Et plus encore, installer un nouveau produit, c'est-à-dire apporter des modifications aux fichiers de registre/système, peut être totalement inacceptable. Les exemples incluent les serveurs critiques. Pourquoi les développeurs n'envisagent-ils pas l'option de versions portables d'applications qui ne nécessitent pas d'installation ?
De version en version, le processus d'installation du package Debugging Tools for Windows subit quelques modifications. Passons maintenant directement au processus d'installation et examinons les manières dont vous pouvez installer la boîte à outils.

Installation des outils de débogage pour Windows à l'aide du programme d'installation Web

Accédez à la page Windows SDK Archive et recherchez une section intitulée Windows 10 et sous l'élément « SDK Windows 10 (10586) et émulateur de périphérique avec Windows 10 Mobile (Microsoft) (version 10586.11) ».

Cliquez sur l'article INSTALLER LE SDK. Après avoir cliqué, téléchargez et exécutez le fichier sdksetup.exe, qui lance le processus d'installation en ligne du SDK Windows. Au stade initial, le programme d'installation vérifiera si le package .NET Framework est installé sur le système dernière version(V. ce moment c'est 4,5). Si le package est manquant, l'installation vous sera proposée et la station redémarrera une fois terminée. Immédiatement après le redémarrage, au stade de l'autorisation de l'utilisateur, le processus d'installation du SDK Windows lui-même démarre.

Souvent, lors de la sélection de tous les composants d'un package sans exception, des erreurs peuvent survenir lors du processus d'installation. Dans ce cas, il est recommandé d'installer les composants de manière sélective, l'ensemble minimum requis.

Une fois l'installation des outils de débogage pour Windows terminée, l'emplacement des fichiers de débogage lorsque cette méthode Notre installation sera la suivante :

  • Versions 64 bits : C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • Versions 32 bits : C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* où x.x est une version spécifique du kit de développement ;
Nous avons remarqué qu'à partir des versions 8, les chemins d'installation sont sensiblement différents des classiques pour tout le monde Versions précédentes Des outils de débogage ?

Un énorme plus cette méthode L'installation des outils de débogage pour Windows implique l'installation simultanée de versions d'outils de débogage pour toutes les architectures.

Installation des outils de débogage pour Windows à partir de l'ISO du SDK Windows

Cette méthode implique l'installation des outils de débogage pour Windows à l'aide de l'image d'installation complète du SDK Windows (Software Developers Kit). Jusqu'à une certaine heure, téléchargez Image ISO pour le système correspondant, cela était possible sur la page Windows SDK Archive. Cependant, pour le moment, vous pouvez obtenir une image ISO du SDK en exécutant le programme d'installation Web sdksetup.exe et en sélectionnant Téléchargez le kit de développement logiciel Windows dans la fenêtre de démarrage du programme d'installation :

Comme nous l'avons découvert, la méthode d'installation précédente utilisant un installateur Web est assez capricieuse et se termine souvent par une erreur. Sur des systèmes propres, il s'installe sans problème, mais sur des systèmes suffisamment chargés, de nombreux problèmes surviennent. Si tel est votre cas, utilisez cette méthode.

En conséquence, sur la page, vous devez sélectionner la distribution requise, pour moi (et je pense pour beaucoup) pour le moment, il s'agit du « SDK Windows pour Windows 7 et .NET Framework 4 » et juste en dessous, cliquez sur le lien « Obtenir un ISO image d’un DVD” .

Lorsque vous travaillez avec le site msdn.microsoft.com, je recommande d'utiliser un navigateur Internet Explorer, car il y a eu des cas où des produits concurrents ne fonctionnaient pas !

Il faut donc choisir uniquement en fonction de la nécessité. En règle générale, le nombre de bits des outils de débogage pour Windows correspond au nombre de bits du système. Mes systèmes sont pour la plupart 64 bits, donc dans la plupart des cas, je télécharge l'image pour un système 64 bits GRMSDKX_EN_DVD.iso.
Ensuite, après avoir téléchargé l'image, nous devons travailler d'une manière ou d'une autre avec l'image ISO existante. La méthode traditionnelle consiste bien sûr à graver un CD, mais c'est une méthode assez longue et parfois coûteuse. Je suggère d'utiliser des utilitaires gratuits pour créer des périphériques de disque virtuel dans le système. Personnellement, je préfère utiliser DEAMON Tools Lite à cet effet. Quelqu'un peut avoir d'autres préférences, des utilitaires plus directs ou légers, selon les goûts et la couleur, comme on dit. Après avoir installé DAEMON Tools Lite, je double-clique simplement sur le fichier image GRMSDKX_EN_DVD.iso et un nouveau fichier virtuel apparaît dans le système. CD:

Puis, en double-cliquant, j'active le chargement automatique et lance l'installation du SDK Windows :

Lorsqu'il est temps de sélectionner les composants à installer dans la liste, nous désactivons absolument toutes les options à l'exception de celles marquées dans la capture d'écran. Cela nous aidera à éviter des erreurs inutiles maintenant.


Tout est exactement comme ça, dans la capture d'écran, il y a deux options marquées : « Windows Performance Toolkit » et « Outils de débogage pour Windows ». Choisissez les deux, car Windows Performance Toolkit vous sera certainement utile dans votre travail ! Puis, après avoir cliqué sur le bouton « Suivant », l'installation se poursuit comme d'habitude. Et à la fin, vous verrez l'inscription « Installation terminée ».
Une fois l'installation terminée, les répertoires de travail du package Debugging Tools for Windows seront les suivants :

  • Pour la version x86 :
  • Pour la version x64 :

À ce stade, l'installation des outils de débogage pour Windows peut être considérée comme terminée.

Installation des outils de débogage pour Windows via le fichier .msi

Si des problèmes surviennent lors de l'installation des outils de débogage pour Windows à l'aide des deux méthodes précédentes, nous en avons encore une en stock, la plus fiable et la plus éprouvée, qui est venue à la rescousse, pour ainsi dire, plus d'une fois. Il était une fois, avant l'intégration dans le SDK Windows, les outils de débogage pour Windows étaient disponibles sous la forme d'un installateur.msi distinct, que l'on peut encore trouver, mais déjà dans les entrailles de la distribution du SDK Windows. Puisque nous avons déjà une image ISO du SDK Windows entre nos mains, nous ne pouvons pas la monter dans le système, mais simplement l'ouvrir à l'aide de l'archiveur WinRAR déjà bien connu, ou de tout autre produit fonctionnant avec le contenu des disques ISO.

Après avoir ouvert l'image, il faut se rendre dans le répertoire « Setup » situé à la racine puis sélectionner l'un des répertoires :

  • Pour installer la version 64 bits : \Configuration\WinSDKDebuggingTools_amd64 et décompressez le fichier dbg_amd64.msi de ce répertoire.
  • Pour installer la version 32 bits : \Setup\WinSDKDebuggingTools et décompressez le fichier dbg_x86.msi de ce répertoire.

Une fois l'installation terminée, les répertoires de travail du package Debugging Tools for Windows seront les suivants :

  • Pour la version x86 : C:\Program Files (x86)\Outils de débogage pour Windows (x86)
  • Pour la version x64 : C:\Program Files\Outils de débogage pour Windows (x64)

À ce stade, l'installation des outils de débogage pour Windows peut être considérée comme terminée.

Informations Complémentaires

Je ne sais pas à quoi cela est lié, peut-être à cause de ma négligence, mais après avoir installé les outils de débogage pour Windows, le programme d'installation ne définit pas le chemin d'accès au répertoire avec le débogueur dans la variable de chemin système Path. Cela impose certaines restrictions sur le lancement de diverses tâches de débogage directement depuis la console. Par conséquent, s'il n'y a pas de chemin, j'écris indépendamment dans la fenêtre Variables d'environnement chemin vers les outils de débogage :

  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

* Dans votre cas, les chemins peuvent différer à la fois en raison de l'utilisation d'un système d'exploitation d'une taille de bit différente et en raison de l'utilisation d'une version différente du SDK.

Les utilitaires du package Debugging Tools for Windows peuvent fonctionner comme des applications portables ; il vous suffit de copier le répertoire du système d'exploitation. Boîte à outils de performances Microsoft Windows et utilisez-le en version portable sur un serveur de production. Mais n'oubliez pas de prendre en compte la capacité du système !! Même si vous avez terminé une installation complète du package sur un système critique, vous pouvez commencer à travailler juste après l'installation, aucun redémarrage n'est requis.

Composition des outils de débogage pour Windows

Et maintenant, enfin, voici la composition des outils de débogage pour Windows :

Déposer But
adplus.doc Documentation pour l'utilitaire ADPlus.
adplus.exe Une application console qui automatise le travail du débogueur cdb pour créer des dumps et des fichiers journaux pour un ou plusieurs processus.
agestore.exe Un utilitaire permettant de supprimer les fichiers obsolètes du stockage utilisé par un serveur de symboles ou un serveur source.
breakin.exe Un utilitaire qui vous permet d'envoyer une combinaison de pauses personnalisée aux processus, semblable à appuyer sur CTRL+C.
cdb.exe Débogueur de console en mode utilisateur.
convertstore.exe Un utilitaire pour convertir des symboles de 2 niveaux à 3 niveaux.
dbengprx.exe Répéteur (serveur proxy) pour le débogage à distance.
dbgrpc.exe Un utilitaire pour afficher les informations sur l'état des appels RPC.
dbgsrv.exe Processus serveur utilisé pour le débogage à distance.
dbh.exe Un utilitaire pour afficher des informations sur le contenu d'un fichier de symboles.
dumpchk.exe Utilitaire de vérification des dumps. Un utilitaire pour vérifier rapidement un fichier de vidage.
dumpexam.exe Un utilitaire pour analyser un vidage mémoire. Le résultat est affiché dans %SystemRoot%\MEMORY.TXT .
gflags.exe Éditeur de drapeaux système globaux. L'utilitaire gère les clés de registre et d'autres paramètres.
i386kd.exe Emballage pour kd. Était-ce ainsi que kd était autrefois appelé pour les systèmes basés sur Windows NT/2000 pour les machines x86 ? Probablement laissé pour des raisons de compatibilité.
ia64kd.exe Emballage pour kd. S'appelait-il autrefois kd pour les systèmes basés sur Windows NT/2000 pour les machines ia64 ? Probablement laissé pour des raisons de compatibilité.
kd.exe Débogueur de console en mode noyau.
kdbgctrl.exe Outil de gestion du débogage du noyau. Un utilitaire pour gérer et configurer la connexion de débogage du noyau.
kdsrv.exe Serveur de connexion pour KD. L'utilitaire est une petite application qui s'exécute et attend les connexions à distance. kd s'exécute sur le client et se connecte à ce serveur pour le débogage à distance. Le serveur et le client doivent provenir du même assembly d’outils de débogage.
tuer.exe Un utilitaire pour mettre fin aux processus.
liste.exe Un utilitaire pour afficher le contenu d'un fichier à l'écran. Cet utilitaire miniature a été inclus dans un seul but : afficher des fichiers texte ou journaux volumineux. Il prend peu d'espace mémoire car il charge le texte par parties.
logger.exe Un débogueur miniature qui ne peut fonctionner qu'avec un seul processus. L'utilitaire injecte logexts.dll dans l'espace de processus, qui enregistre tous les appels de fonction et autres actions du programme étudié.
logviewer.exe Un utilitaire pour afficher les journaux enregistrés par le débogueur logger.exe.
ntsd.exe Débogueur symbolique Microsoft NT (NTSD). Un débogueur identique à cdb sauf qu'il crée une fenêtre de texte au lancement. Comme cdb, ntsd est capable de déboguer à la fois les applications console et les applications graphiques.
pdbcopy.exe Un utilitaire pour supprimer les symboles privés d'un fichier de symboles, contrôlant les symboles publics inclus dans le fichier de symboles.
distant.exe Un utilitaire pour le débogage à distance et le contrôle à distance de n'importe quel débogueur de console KD, CDB et NTSD. Vous permet d'exécuter tous ces débogueurs de console à distance.
rtlist.exe Visionneuse de tâches à distance. L'utilitaire est utilisé pour afficher une liste des processus en cours d'exécution via le processus du serveur DbgSrv.
symchk.exe Un utilitaire permettant de télécharger des symboles depuis le serveur de symboles Microsoft et de créer un cache de symboles local.
symstore.exe Un utilitaire pour créer un réseau ou un stockage de symboles local (2 niveaux/3 niveaux). Le stockage de symboles est un répertoire spécialisé sur disque, construit selon une structure spécifique et contenant des symboles. Une structure de sous-dossiers aux noms identiques aux noms des composants est créée dans le répertoire racine des symboles. À leur tour, chacun de ces sous-dossiers contient des sous-dossiers imbriqués portant des noms spéciaux obtenus en hachant des fichiers binaires. L'utilitaire symstore analyse les dossiers de composants et ajoute de nouveaux composants au magasin de symboles, où n'importe quel client peut les récupérer. On dit que symstore est utilisé pour recevoir des symboles d'un stockage de niveau 0 et les placer dans un stockage à 2/3 niveaux.
tlist.exe Visionneuse de tâches. Un utilitaire pour afficher une liste de tous les processus en cours d'exécution.
umdh.exe Utilitaire de tas de vidage en mode utilisateur. Un utilitaire pour analyser les tas du processus sélectionné. Vous permet d'afficher divers paramètres pour le tas.
usbview.exe Visionneuse USB. Un utilitaire pour visualiser les périphériques USB connectés à un ordinateur.
vmdemux.exe Démultiplexeur de machine virtuelle. Crée plusieurs canaux nommés pour une connexion COM. Les canaux sont utilisés pour déboguer divers composants de machine virtuelle
Windbg.exe Débogueur en mode utilisateur et en mode noyau avec interface graphique.

Pour identifier les causes écrans bleus(BSOD) une analyse de vidage de mémoire est requise. Dans la grande majorité des cas, un minidump, créé par le système en cas d'erreurs critiques, suffit.
Cet article contient instruction étape par étape sur l'installation et la configuration de WinDBG - un puissant outil de débogage qui vous permet d'identifier la véritable cause du BSOD.

Étape 1 - Configuration de petits vidages de mémoire

Étape 2 - Installation de WinDBG

Pour analyser les vidages de mémoire, vous devrez installer le débogueur WinDBG, inclus dans le SDK Windows. Au moment de la rédaction, la dernière disponible Versions Windows SDK :

  • SDK Windows 10 (téléchargement du programme d'installation réseau)
  • SDK Windows 8.1 (téléchargement du programme d'installation réseau)

Étape 3 - Mappage des fichiers .dmp vers WinDBG

Pour faciliter la lecture et l'analyse des vidages de mémoire, mappez les fichiers .dmp à WinDBG. Cela vous permettra d'ouvrir les fichiers de vidage de l'Explorateur directement dans WinDBG sans le lancer au préalable.


Étape 4 — Configuration d'un serveur de symboles pour recevoir les fichiers de symboles de débogage


L'installation et la configuration initiale de WinDBG sont terminées. Afin de changer son apparence, vous pouvez aller dans le menu Voir- vous trouverez les paramètres de police en sélectionnant Police de caractère, et les paramètres de la fenêtre de console dans Possibilités.




Haut