Installation et configuration de WinDBG pour l'analyse des vidages mémoire. Installer les outils de débogage pour Windows Configurer votre système

22 juin 2010

Auparavant, Windbg était disponible séparément en téléchargement. Mais pour les dernières versions, Microsoft le 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 tout le SDK, c'est juste un installateur. une fois que vous avez exécuté 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 version plus ancienne (6.11) qui peut être téléchargée à partir de
le lien donné à la fin de cet article.

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

Introduction à WinDBG - Partie 1

Alexandre Antipov

WinDBG est un excellent débogueur. Il n'a peut-être pas une interface très conviviale et pas de fond noir par défaut, mais c'est l'un des débogueurs les plus puissants et les plus stables sur Windows à l'heure actuelle. Dans cet article, je vais vous expliquer les bases de WinDBG afin que vous puissiez commencer avec.


WinDBG est un excellent débogueur. Il n'a peut-être pas une interface très conviviale et pas de fond noir par défaut, mais c'est l'un des débogueurs les plus puissants et les plus stables sur Windows à l'heure actuelle. Dans cet article, je vais vous expliquer les bases de WinDBG afin que vous puissiez commencer avec.

Ceci est le premier article d'une série sur 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 pas à pas du programme, trucs et astuces.

Dans cet article, nous examinerons le montage et l'attachement à un processus, et dans les suivants, nous couvrirons les points d'arrêt, la progression et l'inspection de la mémoire.

Installation de WinDBG

Par rapport à Windows 7, le processus d'installation de WinDBG sur Windows 8 a subi des changements mineurs. Dans cette section, nous verrons comment installer un débogueur pour les deux systèmes d'exploitation.

Installation de WinDBG sur Windows 8

Dans Windows 8, WinDBG est inclus dans le kit de pilotes Windows (WDK). Vous pouvez installer Visual Studio et le 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 le package de développement complet 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'est 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", qui est inclus avec le SDK Windows et le .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 ultérieures.

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 des programmes d'installation de 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 programmes d'installation de WinDBG pour différentes plates-formes

Interface WinDBG

Figure 4 : Apparence de WinDBG

Dès que vous voyez pour la première fois 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 des processus. Au lieu de perdre 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. La première zone : une fenêtre où s'affiche le résultat de l'exécution des commandes. Deuxième zone : un petit champ de texte pour entrer des commandes.

Figure 5 : Fenêtre de commande WinDBG

Symboles

Dans la plupart des cas, WinDBG ne nécessite aucun paramètre spécial et fonctionne correctement dès la sortie de la boîte. Mais une chose importante qui doit être modifiée, ce sont les symboles. Les symboles sont des fichiers qui sont générés avec le fichier exécutable lors de la compilation du programme et contiennent des informations de débogage (fonctions et noms de variables). Les informations de débogage vous permettent d'explorer 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 regroupés avec l'application. Dans la plupart des cas, les entreprises restreignent l'accès à ces informations.

Pour configurer WinDBG pour Utilisation de 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 les astérisques soient utilisés comme délimiteurs. Après avoir configuré Microsoft Symbol Server, les symboles seront téléchargés dans le dossier C:\Symbols.

Illustration 6 : Configuration Microsoft Serveur de symboles

WinDBG chargera automatiquement les symboles pour fichiers binaires si nécessaire. 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 avez besoin d'importer des symboles pendant le débogage, vous pouvez le faire avec .sympath (la 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 charge uniquement les symboles selon les besoins, 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 ce processus en accédant à 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 avez deux options :

  1. Attacher à un processus déjà en cours d'exécution.
  2. Processus de lancement via WinDBG.

Chaque méthode a ses propres avantages et inconvénients. Si, par exemple, vous exécutez le programme via WinDBG, vous disposez d'options de débogage spéciales (par exemple, le débogage de tas) qui peuvent entraîner le blocage de l'application. D'autre part, il existe également des programmes qui se bloquent 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 lors du 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, il y a un débogage d'un service Windows qui définit certains paramètres au démarrage, donc pour simplifier le processus de débogage, il est également préférable de s'accrocher à un processus en cours d'exécution plutôt que de démarrer le service via un débogueur. Certaines personnes affirment 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 d'un processus

Si vous déboguez une application autonome qui s'exécute localement et n'est pas en 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 le moyen le plus pratique pour vous.

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

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

Connexion de processus

La connexion à un processus déjà en cours d'exécution n'est pas non plus difficile. Cependant, veuillez noter 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, selon le vidage sur incident que vous déboguez, vous souhaiterez peut-être vous connecter non pas au processus parent, mais au processus associé à l'onglet.

Pour attacher à un processus déjà en cours d'exécution, allez dans "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 vous connecter au processus.

Figure 10 : Sélection d'un processus auquel s'accrocher

Si, après connexion, l'application a suspendu son travail, vous pouvez utiliser le mode "Non invaise" 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 gérer cette tâche avec un débogueur local au lieu d'utiliser une machine virtuelle ou RDP. Ou peut-être que vous déboguez le processus LoginUI.exe, qui n'est disponible que lorsque le système est verrouillé. Dans de telles situations, vous pouvez utiliser la version locale de WinDBG et vous connecter à distance aux processus. Pour résoudre ces problèmes, il existe deux méthodes les plus courantes.

Sessions de débogage existantes

Si vous avez déjà commencé à déboguer le programme localement (en attachant ou en lançant un processus via WinDBG), vous pouvez entrer une commande spécifique et WinDBG démarrera un "écouteur" (é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, un avertissement comme celui-ci peut s'afficher :

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

Ensuite, WinDBG signalera 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 à partir d'un hôte distant à une session de débogage déjà existante en allant dans "Fichier : Se connecter à une session distante" et en entrant quelque chose comme ceci dans le champ de texte : tcp:Port=5005,Server=192.168.127.138

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

Après connexion, vous recevrez une confirmation sur le client distant :


serveur 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éer un serveur distant

Vous pouvez également créer un serveur WinDBG distinct, vous y connecter à distance et sélectionner un processus à déboguer. Cela peut être fait à l'aide du fichier dbgsrv.exe dans lequel vous prévoyez 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

Et 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 si vous allez dans le fichier "Fichier : Connexion au stub distant" et entrez la ligne suivante dans le champ de texte : tcp:Port=5005,Serveur=192.168.127.138

Figure 15 : Connexion au serveur de débogage

Après la connexion, vous ne recevrez aucun signal indiquant que vous vous êtes connecté, mais si vous accédez à "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 maintenant vous connecter au processus comme si vous le faisiez localement.

Système d'aide

Le système d'aide de WinDBG est excellent. En plus d'apprendre quelque chose de nouveau, vous devriez pouvoir recevoir Informations d'arrière-plan sur n'importe quelle équipe. Utilisez la commande .hh pour accéder à l'aide de WinDBG :

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

windbg> .hh .recharger

Ou rendez-vous simplement dans la section "Aide : Sommaire".

Modules

Pendant l'exécution du programme, divers modules sont importés qui fournissent les fonctionnalités de l'application. Ainsi, si vous savez quels modules sont importés par une application, vous comprendrez mieux son fonctionnement. Dans de nombreux cas, vous déboguerez le module spécifique chargé par le programme, et non l'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
Copyright (c) Microsoft Corporation. Tous les droits sont 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 avec 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 Codecs Windows 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-
control_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 kernel32 C:\Windows\system32\kernel32.dll
77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
777b0000 777ba000LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

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

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

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

0:005> !dh kernel32

Type de fichier : DLL
VALEURS D'EN-TÊTE DE FICHIER
Machine 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 facultatif
2102 caractéristiques
Exécutable
machine à mots 32 bits
DLL

VALEURS D'EN-TÊTE OPTIONNELLES
10B magie #
9.00 version de l'éditeur de liens
Code de taille C4600
C800 taille des données initialisées
0 taille des données non initialisées
510C5 adresse du point d'entrée
code de base 1000
----- Nouveau -----
77550000 base d'images
Alignement de 1000 sections
Alignement de 200 fichiers
3 sous-système (Windows CUI)
Version du système d'exploitation 6.01
Version d'image 6.01
Version du sous-système 6.01
Image de taille D4000
En-têtes de taille 800
Somme de contrôle D5597
00040000 taille de réserve de pile
00001000 taille du commit de pile
00100000 taille de réserve de tas
00001000 taille du commit de tas
140 caractéristiques DLL
socle dynamique
Compatible NX
B4DA8 [A915] adresse du répertoire d'exportation
BF6C0 [ 1F4] adresse du répertoire d'importation
C7000 [ 520] adresse du répertoire de ressources
0 [ 0] adresse du répertoire des exceptions
0 [ 0] adresse du répertoire de sécurité
C8000 [B098] adresse du répertoire de relocalisation de la base
C5460 [ 38] adresse du répertoire de débogage
0 [ 0] adresse de Description Répertoire
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
.texte nom
Taille virtuelle C44C1
1000 adresses virtuelles
C4600 taille des données brutes
800 pointeur de fichier vers des données brutes

0 nombre de déménagements
0 nombre de numéros de ligne
60000020 drapeaux
Code
(pas d'alignement spécifié)
Exécuter Lire

Répertoires de débogage(2)
Pointeur d'adresse de taille de type
cv 25 c549c c4c9c Format : RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

EN-TÊTE DE SECTION #2
.nom des données
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
Drapeaux C0000040
données initialisées
(pas d'alignement spécifié)
Lire écrire

EN-TÊTE DE SECTION #3
nom .rsrc
520 taille virtuelle
Adresse virtuelle C7000
600 taille 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
(pas d'alignement spécifié)
Lecture seulement

EN-TÊTE DE SECTION #4
.relocname
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
(pas d'alignement spécifié)
Lecture seulement

Messages et exceptions

Après l'attachement à 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 juste un marqueur utilisé pour arrêter l'application). Les informations sur les points d'arrêt s'affichent à l'écran :

(da8.b44) : Exception d'instruction d'interruption - code 80000003 (première chance)

Ce message particulier est une exception, à savoir l'exception de la première chance. Essentiellement, une exception est une condition spéciale qui se produit pendant l'exécution d'un programme. L'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 seconde chance signifie qu'après que l'exception se soit produite, certaines opérations seront effectuées, puis le programme arrêtera son travail.

Registres

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

Après connexion à 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

Plus tard, vous pourrez à nouveau dupliquer ces informations à 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 particulier, nous pouvons exécuter la commande suivante :

0:005> r eax
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 l'instruction

La dernière commande concerne l'exécution d'instructions. Ici, des informations sont également affichées, comme dans le cas de la commande r, sur ce que contient le registre EIP. EIP est un registre contenant la localisation instruction suivanteà 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 articles suivants, nous verrons comment utiliser WinDBG en combat : points d'arrêt, débogage pas à pas et visualisation de la mémoire. Ne changez pas ! J

Ces types de pannes sont généralement associés à un pilote défectueux qui peut être difficile à identifier. Cependant, le système amélioré de suivi des bogues dans Windows Vista(et pas seulement sous Vista !) peut souvent vous conduire à un fichier problématique. En conséquence, la plupart des gens arrêtent d'essayer frénétiquement de travailler sur un ordinateur instable, d'enregistrer des documents avec une régularité paranoïaque et d'espérer le meilleur.

Lorsque Windows plante, un « vidage mémoire » est généralement créé. Ce dernier peut être exploré avec un outil de débogage gratuit Débogage Windows Outils, qui peuvent vous diriger vers la source du problème. Par conséquent, tout ce que vous devez faire est de :

Téléchargez-vous un outil de débogage

Vous pouvez télécharger les outils de débogage Windows directement à partir du site Web de Microsoft. Le programme fonctionne avec de nombreux systèmes d'exploitation, en commençant par Windows NT 4 et en terminant par Windows 2008, vous ne devriez donc pas avoir de problèmes avec. Oui, on ne peut pas dire qu'il soit stable sous Windows 7 RC, mais d'après nos tests il fonctionne toujours. Par conséquent, même une tentative de diagnostic d'un problème sous Windows 7 RC peut réussir.

Configurez votre système

Pendant les pannes, votre ordinateur doit créer des vidages mémoire qui serviront plus tard de source d'informations pour le débogueur. Par conséquent, il est important que Windows soit configuré pour générer des vidages. Pour personnaliser votre système d'exploitation, cliquez sur clic-droit passez la souris sur Votre ordinateur et sélectionnez Propriétés. Cliquez ensuite sur l'onglet Paramètres système avancés, recherchez la sous-section Paramètres de démarrage et de récupération et assurez-vous que l'option Écrire les informations de débogage est définie sur Vidage mémoire du noyau ) ou Vidage mémoire complet.

Ensuite, cliquez sur Démarrer, accédez à Programmes (Tous les programmes), sélectionnez Outils de débogage et exécutez WinDbg. Dans le programme, allez dans le menu File et sélectionnez Symbol File Path... Puis écrivez la ligne suivante dans la fenêtre qui s'ouvre :

SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

Ce dernier définit le chemin vers des données spéciales - les soi-disant "symboles" (symboles), qui peuvent aider l'outil de débogage à identifier votre fichier en panne.

Après avoir saisi la chaîne, cliquez sur le bouton OK. Plus tard, lorsque vous travaillerez avec le débogueur, cette ligne entraînera le téléchargement des symboles à partir de msdl.microsoft.com et leur enregistrement dans le dossier c:\symbols.

Résoudre votre problème

Attendez maintenant une autre panne d'écran bleu et la fin ultérieure du redémarrage de l'ordinateur. Ensuite, exécutez à nouveau WinDbg (les utilisateurs de Vista doivent exécuter le programme en tant qu'administrateur), cliquez sur le menu Fichier, sélectionnez Ouvrir le vidage sur incident, ouvrez le fichier \Windows\MEMORY.DMP et le programme commencera immédiatement à l'analyser.

Malheureusement, WinDbg fournit très peu d'informations sur ce qu'il fait, vous pourriez donc même penser que le programme est bloqué. Cependant, attendez. Comprenez que l'analyse, disons, de 4 Go de mémoire sur un ordinateur pas très puissant peut prendre du temps, jusqu'à des heures. Par conséquent, soyez patient, mais laissez plutôt l'analyse du jour au lendemain.

Cependant, le résultat est généralement obtenu en quelques minutes. Ceci est démontré par la ligne Bugcheck Analysis qui dit quelque chose comme "Probablement causé par : UACReplace.sys". Traduit en russe, cela signifie que le problème est peut-être causé par le fichier UACReplace.sys. Entrez-le dans la barre de recherche, par exemple Google et vous découvrirez sa véritable origine. En particulier, s'il appartient à l'un des programmes que vous avez installés ou pilote installé, alors vous pouvez simplement essayer de le mettre à jour ou lui. Peut-être que cela résoudra vos problèmes.

Il faut dire que de temps en temps WinDbg ne peut pas du tout nommer un fichier, ou sélectionne simplement l'un des DLL Windows. Si cela vous est arrivé, cliquez simplement sur la fenêtre de commande au-dessus de la barre d'état et tapez la commande :

Après cela, appuyez sur Entrée. Cela vous fournira un rapport plus détaillé qui peut contenir des informations sur raisons possibles vos ennuis.

Si cette fois vous n'êtes pas chanceux, ne désespérez pas. Le débogage est assez difficile, même pour les experts. Il vous suffit donc de fermer WinDbg et de relancer l'analyseur après le prochain plantage. Cela vous donnera peut-être plus d'informations. Bonne chance!

Au moment d'une panne critique, le système d'exploitation Windows cesse de fonctionner et affiche écran bleu mort (BSOD). Contenu mémoire vive et toutes les informations sur l'erreur qui s'est produite sont écrites dans le fichier d'échange. Au prochain démarrage de Windows, un vidage sur incident est créé avec des informations de débogage basées sur les données enregistrées. Une entrée d'erreur fatale est créée dans le journal des événements système.

Attention! Vidage sur incident non généré en cas d'échec sous-système de disque ou une erreur critique s'est produite au stade initial du chargement de Windows.

Types de vidages sur incident Windows

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

  • Mini vidage mémoire (Petit vidage mémoire)(256 Ko). Ce type de fichier comprend un minimum d'informations. Il ne contient qu'un message sur Erreur BSOD, des informations sur les pilotes, les processus qui étaient actifs au moment du plantage et le processus ou le thread du noyau à l'origine du plantage.
  • Image mémoire du noyau. En règle générale, de petite taille - un tiers du volume mémoire physique. Le vidage mémoire du noyau est plus détaillé que le minidump. 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 les 1 Mo requis par Windows pour créer ce fichier.
  • Vidage mémoire automatique. Correspond à un vidage mémoire du noyau en termes d'informations. Il ne diffère que par la quantité d'espace qu'il utilise pour créer le fichier de vidage. Ce type de fichier n'existait pas dans Windows 7. Il a été ajouté dans Windows 8.
  • Image mémoire active. Ce type filtre les éléments qui ne peuvent pas déterminer la cause d'une défaillance du système. Cela a été ajouté dans 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 la génération de vidage mémoire sous Windows ?

À l'aide de Win + Pause, ouvrez la fenêtre des paramètres système, sélectionnez " Paramètres système supplémentaires" (Réglages avancés du système). Dans l'onglet " En outre" (Avancé), section "" (Démarrage et récupération), cliquez sur le bouton " Choix" (Réglages). Dans la fenêtre qui s'ouvre, configurez les actions en cas de panne du système. Cochez la case " Écrire des événements dans le journal système» (Écrire un événement dans le journal système), sélectionnez le type de vidage à générer lorsque le système plante. Si dans la case à cocher " Remplacer le fichier de vidage existant» (Ecraser tout fichier existant) cochez la case, le fichier sera écrasé à chaque plantage. 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 du système (Redémarrer automatiquement).

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

Maintenant, si un BSOD se produit, vous pouvez analyser le fichier de vidage et trouver la cause des échecs. Un minidump est stocké par défaut dans le dossier %systemroot%\minidump. Pour analyser le fichier de vidage, je recommande d'utiliser le programme WinDBG(Débogueur de noyau Microsoft).

Installation de WinDBG sous Windows

Utilitaire WinDBG inclus dans " SDK Windows 10» (SDK Windows 10). .

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

Exécutez l'installation et choisissez d'installer le package sur cet ordinateur ou de le télécharger pour l'installer sur d'autres ordinateurs. Installez le package sur l'ordinateur local.

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

Une fois installés, les raccourcis WinDBG se trouvent dans le menu Démarrer.

Définition de l'association des fichiers .dmp avec WinDBG

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

  1. Ouvrez une invite 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 le 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 du processus de compilation d'un programme avec un fichier exécutable. Ces blocs de données contiennent des informations sur les noms de variables, les fonctions appelées, les bibliothèques, etc. Ces données ne sont pas nécessaires lors de l'exécution du programme, mais utiles lors de son débogage. Les composants Microsoft sont compilés avec des symboles distribués via Microsoft Symbol Server.

Configurez WinDBG pour utiliser Microsoft Symbol Server :

  • Ouvrez WinDBG ;
  • Aller au menu dossier –> Chemin d'accès au fichier de symboles ;
  • Écrivez une chaîne contenant l'URL de téléchargement des symboles de débogage depuis le site Web de Microsoft et le dossier d'enregistrement du cache : SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols Dans l'exemple, le cache est téléchargé au dossier E:\Sym_WinDBG, vous pouvez en spécifier n'importe lequel.
  • N'oubliez pas d'enregistrer les modifications apportées au menu dossier–>Enregistrer l'espace de travail ;

WinDBG recherchera des symboles dans le dossier local et, s'il n'y trouve pas les symboles nécessaires, il téléchargera automatiquement les symboles à partir du 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

S'il n'y a pas de connexion Internet, téléchargez d'abord le package de symboles à partir de la ressource Packages de symboles Windows.

Analyse de vidage sur incident 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 d'Internet. Au cours de ce processus, vous ne pouvez pas utiliser WinDBG. En bas de la fenêtre (dans la ligne de commande du débogueur) apparaît l'inscription Debugee non 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é dans valeur hexadécimale et ressemble 0xXXXXXXXXX(indiqué dans l'une des options - STOP :, 02/07/2019 0008F, 0x8F). Dans notre exemple, le code d'erreur est 0x139.

Le débogueur vous invite à exécuter la commande analyse -v, survolez simplement le lien et cliquez. A quoi sert cette commande ?

  • Il effectue une analyse préliminaire du vidage mémoire et fournit des informations détaillées pour commencer l'analyse.
  • Cette commande affichera le code STOP et le nom symbolique de l'erreur.
  • Il montre la pile d'appels des commandes qui ont conduit au crash.
  • De plus, les défauts d'adresse IP, 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 (la liste n'est pas complète).

1 : kd> !analyser -v


* *
*Analyse de vérification des bogues*
* *
*****************************************************************************
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 de trap pour l'exception qui a causé le bugcheck
Arg3 : ffffd0003a20d528, Adresse de l'enregistrement d'exception pour l'exception qui a provoqué la vérification de bogue
Arg4 : 0000000000000000, réservé
Détails de débogage :
------------------

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

CUSTOMER_CRASH_COUNT : 1

DEFAULT_BUCKET_ID : FAIL_FAST_CORRUPT_LIST_ENTRY

Code d'erreur STOP au format abrégé :

BUGCHECK_STR : 0x139

Le processus qui s'est écrasé (pas nécessairement la cause de l'erreur, juste ce processus s'exécutait en mémoire au moment du crash) :

PROCESS_NAME : sqlservr.exe

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

ERREUR_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: nt! ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac : 00000000`00000004 00000000`00000000
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+0x13
000000ee'f25ed2b8 00000000'00000000: 00000000'00000000 00000000'00000000 00000000'00000000

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

SUIVI_IP :
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov byte 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 un pilote problématique, le nom s'affiche 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 d'image de 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 du 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 ci-dessus, l'analyse pointait vers le fichier du noyau ntkrnlmp.exe. Lorsque l'analyse de vidage mémoire indique pilote système(par exemple, win32k.sys) ou un fichier du noyau (comme dans notre exemple ntkrnlmp.exe), très probablement fichier donné 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 dysfonctionnement de l'équipement.

Si vous voyez que le BSOD est dû à un pilote tiers, son nom sera répertorié dans les valeurs MODULE_NAME et IMAGE_NAME.

Par exemple:

Chemin d'accès à 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 avec les pilotes est résolu en les mettant à jour.

Outils de débogage pour Windows- Outils de débogage de code d'exploitation Systèmes Windows. Il s'agit d'un ensemble de programmes librement distribués de Microsoft conçus pour déboguer le code en mode utilisateur et en mode noyau : applications, pilotes, services, modules du noyau. La boîte à outils comprend des débogueurs de console et d'interface graphique, des utilitaires pour travailler avec des symboles, des fichiers, des processus, des utilitaires pour le débogage à distance. La boîte à outils contient des utilitaires avec lesquels vous pouvez trouver les causes des pannes dans divers composants du système. Outils de débogage pour Windowsà partir d'un certain moment ne sont pas disponibles au téléchargement sous la forme d'une distribution autonome et font partie du SDK Windows (Windows Software Development Kit). Ensemble instrumental 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, le dernier et le meilleur version actuelle Les outils de débogage pour Windows sont contenus dans le SDK Windows.

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

Voyons maintenant ce que, notamment, les outils de débogage pour Microsoft Windows permettent de faire :

  • Débogage des applications locales, des services (services), des pilotes et du noyau ;
  • Déboguer sur le réseau applications distantes, services (services), pilotes et noyau ;
  • Déboguez 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 avons 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 le programme d'installation 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 toujours pas à quel moment, pourquoi devrais-je installer des outils de débogage sur un ordinateur ? Souvent, après tout, vous rencontrez une situation où l'intervention dans l'environnement de travail est extrêmement indésirable ! Et d'autant plus que l'installation d'un nouveau produit, c'est-à-dire apporter des modifications aux fichiers de registre / système, peut être totalement inacceptable. Les serveurs critiques en sont des exemples. Pourquoi les développeurs n'envisagent-ils pas des versions portables d'applications qui ne nécessitent pas d'installation ?
De version en version, le processus d'installation du package Outils de débogage pour Windows subit quelques modifications. Passons maintenant directement au processus d'installation et examinons les manières dont la boîte à outils peut être installée.

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 "Windows 10 SDK (10586) et Microsoft Windows 10 Mobile Device Emulator (version 10586.11)".

Cliquez sur un élément INSTALLER 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(actuellement c'est 4.5). Si le package est manquant, l'installation vous sera proposée et la station sera redémarrée une fois terminée. Immédiatement après le redémarrage, au stade de l'autorisation de l'utilisateur, le processus d'installation démarre directement avec le SDK Windows.

Souvent, lors du choix de tous les composants du 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.

Après l'installation des outils de débogage pour Emplacement Windows déboguer les fichiers lorsque cette méthode notre installation sera la suivante :

  • Versions 64 bits : C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • version 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 ;
Avez-vous remarqué que les versions 8 et supérieures, les chemins d'installation sont sensiblement différents de ceux classiques pour toutes les versions précédentes des outils de débogage ?

Un énorme plus cette méthode L'installation des outils de débogage pour Windows consiste à installer des versions d'outils de débogage pour toutes les architectures à la fois.

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'à un certain temps, téléchargez image iso pour le système approprié, vous pouvez visiter 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 l'élément Télécharger le kit de développement logiciel Windows dans la fenêtre de démarrage du programme d'installation :

Comme on l'a découvert, la méthode d'installation précédente utilisant le programme d'installation Web est assez capricieuse et échoue souvent. 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 le kit de distribution requis, pour moi (et je pense pour beaucoup) pour le moment, c'est " Forfait Windows SDK pour Windows 7 et .NET Framework 4" et cliquez sur le lien "Obtenir l'image ISO du DVD" ci-dessous.

Lorsque vous travaillez avec le site msdn.microsoft.com, je vous conseille d'utiliser un navigateur Internet Explorer, car on a constaté des cas de non-fonctionnement de produits concurrents !

En conséquence, il est nécessaire de choisir uniquement si nécessaire. Habituellement, le nombre de bits des outils de débogage pour Windows est le même que le nombre de bits du système. Mes systèmes de test sont principalement 64 bits, donc dans la plupart des cas, je télécharge l'image pour le système 64 bits GRMSDKX_EN_DVD.iso .
Ensuite, après avoir téléchargé l'image, nous devons en quelque sorte travailler 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 propose d'utiliser utilitaires gratuits pour créer des périphériques de disque virtuel dans le système. Personnellement, je préfère utiliser le programme DEAMON Tools Lite à cet effet. Quelqu'un peut avoir d'autres préférences, des utilitaires plus directs ou légers, des goûts et des couleurs, comme on dit .. Après avoir installé DAEMON Tools Lite, je double-clique simplement sur le fichier image GRMSDKX_EN_DVD.iso et j'ai un nouveau disque compact virtuel:

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

Lorsque vient le tour de sélectionner les composants à installer dans la liste, nous désactivons absolument toutes les options sauf celles marquées dans la capture d'écran. Cela nous aidera à éviter des erreurs inutiles maintenant.


C'est vrai, la capture d'écran montre deux options : "Windows Performance Toolkit" et "Outils de débogage pour Windows". Choisissez les deux, car Windows Performance Toolkit vous sera certainement utile dans votre travail ! De plus, après avoir cliqué sur le bouton "Suivant", l'installation se poursuit en mode normal. Et à la fin, vous verrez l'inscription "Installation Complete".
Une fois l'installation terminée, les répertoires de travail du kit Outils de débogage pour Windows seront les suivants :

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

Ceci termine l'installation des outils de débogage pour Windows.

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

Si vous rencontrez des problèmes lors de l'installation des outils de débogage pour Windows avec deux manières précédentes, nous en avons encore un en stock, le plus fiable et le plus éprouvé, qui a aidé, pour ainsi dire, plus d'une fois. Autrefois, avant l'intégration dans le SDK Windows, les outils de débogage pour Windows étaient disponibles sous la forme d'un programme d'installation .msi séparé, que l'on peut encore trouver, mais déjà dans les entrailles de la distribution du SDK Windows. Parce que nous avons déjà ISO de Windows SDK, alors nous ne pouvons pas le monter dans le système, mais simplement l'ouvrir à l'aide du déjà bien connu Archiveur WinRAR, eh bien, ou tout autre produit qui fonctionne avec le contenu des disques ISO.

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

  • Pour installer la version 64 bits : \Setup\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 kit Outils de débogage pour 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 il est lié, peut-être par inattention, 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 l'exécution de diverses tâches de débogage directement à partir de la console. Par conséquent, en l'absence de chemin, j'écris moi-même 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 profondeur de bits différente et en raison de Utilisation du SDK autre version.

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 l'utiliser 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 effectué 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.

Outils de débogage pour Windows

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

Dossier Objectif
adplus.doc Documentation de l'utilitaire ADPlus.
adplus.exe Une application console qui automatise le travail du débogueur cdb pour créer des vidages, des fichiers journaux pour un ou plusieurs processus.
agestore.exe Un utilitaire pour supprimer les fichiers obsolètes du stockage utilisé par le serveur de symboles ou le serveur source.
breakin.exe Un utilitaire qui vous permet d'envoyer une combinaison de pause personnalisée aux processus, comme si vous appuyiez sur CTRL+C.
cdb.exe Débogueur de console en mode utilisateur.
convertstore.exe Utilitaire pour convertir des personnages de 2 niveaux à 3 niveaux.
dbengprx.exe Ripiter (serveur proxy) pour le débogage à distance.
dbgpc.exe Un utilitaire pour afficher des informations sur l'état d'un appel RPC.
dbgsrv.exe Le 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 de vidage. Utilitaire pour vérification rapide fichier de vidage.
dumpexam.exe Un utilitaire pour analyser un vidage mémoire. Le résultat est sorti dans %SystemRoot%\MEMORY.TXT .
gflags.exe Éditeur des drapeaux du système global. L'utilitaire gère les clés de registre et d'autres paramètres.
i386kd.exe Emballage pour kd. Une fois qu'il s'appelait kd pour les systèmes sur Socle Windows NT/2000 pour les ordinateurs x86 ? Probablement laissé pour des raisons de compatibilité.
ia64kd.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 ia64 ? Probablement laissé pour des raisons de compatibilité.
kd.exe Débogueur de console en mode noyau.
kdbgctrl.exe Outil de gestion de débogage du noyau. Utilitaire de gestion et de configuration de 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 des connexions à distance. kd s'exécute sur un client et se connecte à ce serveur pour le débogage à distance. Le serveur et le client doivent provenir du même assembly Outils de débogage.
kill.exe Utilitaire pour terminer les processus.
liste.exe Un utilitaire pour afficher le contenu d'un fichier à l'écran. Cet utilitaire miniature a été fourni avec un seul objectif - afficher de gros fichiers texte ou journaux. Il prend peu d'espace mémoire, car il charge le texte par parties.
logger.exe Un petit débogueur 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 en cours d'examen.
logviewer.exe Un utilitaire pour afficher les journaux écrits 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 démarrage. 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, en contrôlant les symboles publics inclus dans un fichier de symboles.
remote.exe Utilitaire de débogage à distance et télécommande tout 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 processus en cours d'exécution via le processus serveur DbgSrv.
symchk.exe Un utilitaire pour télécharger des symboles à partir du serveur de symboles Microsoft et créer un cache de symboles local.
symstore.exe Utilitaire pour créer un réseau ou stockage local personnages (2 niveaux/3 niveaux). Un magasin de symboles est un répertoire spécialisé sur le disque qui est construit selon une certaine structure et contient des symboles. Dans le répertoire racine des symboles, une structure de sous-dossiers est créée avec des noms identiques aux noms des composants. À leur tour, chacun de ces sous-dossiers contient des sous-dossiers imbriqués avec 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 le symstore est utilisé pour obtenir des symboles du stockage de niveau 0 et les mettre dans le stockage de niveau 2/3.
tlist.exe Visionneuse de tâches. Un utilitaire pour lister tous les processus en cours d'exécution.
umdh.exe Utilitaire de tas de vidage en mode utilisateur. Un utilitaire pour analyser les tas d'un processus sélectionné. Vous permet d'afficher diverses options pour le tas.
usbview.exe Visionneuse USB. utilitaire pour voir Périphériques USB connecté à un ordinateur.
vmdemux.exe Démultiplexeur de machine virtuelle. Crée plusieurs canaux nommés pour une seule connexion COM. Les canaux sont utilisés pour déboguer divers composants de la machine virtuelle
windbg.exe Débogueur en mode utilisateur et en mode noyau avec interface graphique.