Notes de publication
Cette rubrique fournit des informations sur les nouveautés de WinDbg. Les versions antérieures ont été publiées en tant que WinDbg Preview.
1.2409.17001.0
Correctifs de l’accessibilité
Nous avons corrigé plusieurs problèmes lors de l'interaction avec WinDbg à l'aide d'un lecteur d'écran.
Résolution des bogues
- Correction d'un problème où la désinstallation de WinDbgX empêche le lancement de WinDbg classique.
- Correction d'un problème où WinDbgX se redimensionnait après être apparu lors du lancement.
Débogage par remontée du temps (TTD)
- Mise à jour vers la version 1.11.429.
- Voir Notes de mise à jour du TTD pour plus de détails.
1.2407.24003.0
Nouvelles fonctionnalités
Nouveau fournisseur de scripts JavaScript
Nous expédions maintenant un nouveau fournisseur JavaScript rétrocompatible basé sur V8. Par conséquent, les hôtes arm64 peuvent désormais utiliser des extensions JavaScript. L’interface utilisateur arm64 utilise désormais par défaut le moteur arm64.
Le nouveau fournisseur est activé par défaut sur toutes les architectures.
Sur x86 et x64, il peut être activé/désactivé via les commandes .veighton
et .veightoff
.
Ces commandes et le fournisseur JavaScript hérité seront supprimés prochainement.
Extensibilité de l’interface utilisateur via la galerie d’extensions et le modèle de données
Les extensions de débogueur avec des manifestes de galerie d’extensions peuvent désormais ajouter des icônes à l’onglet « Extensions » du ruban WinDbg. Le fait de cliquer sur ces icônes lance la visualisation d’une requête de modèle de données spécifique. Pour ce faire, l’extensibilité est effectuée en ajoutant des vues au manifeste de la galerie d’extensions. Une vue lie un couplage d’un nom et d’une icône à une requête de modèle de données et au type de vue. La documentation est disponible dans la Documentation du manifeste de la galerie d’extensions
Ajout de paramètres d’exception au déclencheur de charge d’exception de la galerie d’extensions
Une extension de galerie peut désormais être chargée de manière conditionnelle en fonction de valeurs de paramètres d’exception spécifiques. Pour en savoir plus, consultez la Documentation du manifeste de la galerie d’extensions.
Option de configuration pour ne jamais télécharger de symboles spécifiques
Vous pouvez désormais ignorer le téléchargement des symboles pour les images spécifiées.
Dans la section Symbols
de votre fichier de configuration DbgX.xml
, vous pouvez ajouter une liste de symboles :
<Namespace Name="DisabledSymbolsDownload">
<Setting Name="MSEdge.dll" Type="VT_BSTR" Value=""></Setting>
</Namespace>
Dans le débogueur, vous pouvez exécuter dx Debugger.Settings.Symbols.DisabledSymbolsDownload
pour afficher la liste actuelle des symboles qui ne sont pas téléchargés.
Vous pouvez également modifier la liste directement à partir du débogueur comme indiqué ci-dessous :
dx @$curprocess.Modules[1].DisableSymbolDownload()
dx @$curprocess.Modules[1].EnableSymbolDownload()
Nouvelle commande pour afficher les informations SourceLink
Pour faciliter le débogage des problèmes liés au téléchargement de sources basées sur SourceLink incorporé, vous pouvez désormais utiliser la commande !lmsourcesinfo module
pour afficher le contenu de SourceLink que le débogueur utilisera.
Améliorations générales de l’interface utilisateur
Nous avons apporté de petites améliorations aux fenêtres comme la fenêtre « Modules » ou la fenêtre « Pile » :
- Vous pouvez désormais trier les vues de grille en cliquant sur la colonne d’en-tête.
- De nouvelles actions sont disponibles en cliquant sur le bouton droit de la souris.
- La fenêtre « Pile » affiche des images comme étant alignées, le cas échéant.
Résolution des bogues
- Correction d’un problème où les PDB de plus de 4 Go ne pouvaient pas être téléchargées via HTTP.
- Edge est un exemple de PDB de ce type.
- Correction du problème de mise en cache dans le fournisseur d’informations d’identification du débogueur (maintenant, il met en cache les informations d’identification par site).
- Correction des bogues lors de l’évaluation des déclencheurs de charge de la galerie d’extensions.
- Correction d’un bogue avec
!address
qui pouvait provoquer un plantage. !heap -a -a
devrait fonctionner maintenant.
TTD
Consultez Notes de publication de TTD pour la version 1.11.410.
1.2402.24001.0
Nouvelles fonctionnalités
Débogage Linux en direct
Vous pouvez désormais déboguer en direct un processus Linux. Pour plus d’informations, consultez ces rubriques :
Débogage en direct du processus distant de Linux
Pour le moment, le client WinDbg nécessitera toujours Windows, car WinDbg ne s’exécute pas sous Linux.
Enregistrer un sous-ensemble de l’exécution avec le « Débogage de voyage dans le temps »
Vous pouvez désormais spécifier une liste de modules à enregistrer pour concentrer le TTD sur les modules qui vous intéressent. Cela permet de réduire considérablement la surcharge d’enregistrement. Pour l’utiliser, cochez simplement « Enregistrer un sous-ensemble de l’exécution » dans la boîte de dialogue « Configurer et enregistrer », puis spécifiez le ou le(s) module(s) que vous souhaitez enregistrer. (voir les problèmes connus ci-dessous).
Pour un contrôle plus précis, vous pouvez enregistrer votre programme avec précision à l’aide d’une nouvelle API d’enregistrement dans le processus. Découvrez comment utiliser notre exemple de code et notre documentation.
Fenêtre d’enregistrement compacte
La nouvelle fenêtre d’enregistrement ressemble à la sortie de la commande r
. Notez que la modification à partir de la nouvelle fenêtre d’enregistrement n’est pas encore prise en charge.
Nouveaux paramètres pour e
(Entrer des valeurs) dans les commandes mémoire
Les e
(Entre des valeurs) dans les commandes mémoire prennent désormais en charge les adresses physiques tout comme les commandes d
(Afficher la mémoire). Notez que ces options sont uniquement prises en charge en mode noyau :
Option | Description |
---|---|
/p |
Utilise les adresses de mémoire physique pour l’affichage. La plage spécifiée par Range sera extraite de la mémoire physique plutôt que de la mémoire virtuelle. |
/p[c] |
Identique à /p , sauf que la mémoire cache sera lue. Les crochets autour de c doivent être inclus. |
/p[uc] |
Identique à /p , sauf que la mémoire non mise en cache sera lue. Les crochets autour de uc doivent être inclus. |
/p[wc] |
Identique à /p , sauf que la mémoire combinée en écriture sera lue. Les crochets autour de wc doivent être inclus. |
Pour en savoir plus, consultez e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Entrer des valeurs).
Correctifs de bogues
- Prise en charge de la décoration de noms Rust dans le débogage Linux
- Améliorations du débogage de CLR
- Ajouter la possibilité de forcer la pile à parcourir en mode mixte des images CLR
- Ajout du paramètre
ForceMixedModeStackWalker
ajouté àconfig.xml
ouDbgX.xml
. - Ajout de la commande
!forceclrmixedmodeunwind
pour des investigations ponctuelles ou si vous ne pouvez pas modifier le paramètre de configuration.
- Ajout du paramètre
- Ajouter la possibilité de forcer la pile à parcourir en mode mixte des images CLR
- Améliorations générales du débogage CLR sur Linux
- Correction d’un certain nombre de problèmes concernant les variables de LinuxKernel.js et par processeur
- Ajout de la commande
!runq
à LinuxKernel.js pour pouvoir vider les files d’attente d’exécution du planificateur de noyau par processeur (forme similaire à la commanderunq
de l’utilitaire d’incident Linux) - Correction de plusieurs commandes dans LinuxKernel.js pour correspondre aux modifications du noyau : dans les noyaux les plus récents, l’arborescence de l’horloge utilise des nœuds RB mis en cache au lieu de nœuds RB bruts ; dans les noyaux les plus récents, la liste all_bdevs n’existe plus, de sorte que les appareils à blocs sont désormais explorés à partir du superblock(blockdev_superblock)
- Ajout de la commande
- Divers correctifs natvis pour un fonctionnement plus proche des versions récentes de Visual Studio
- Préférer sourcelink à sourceinfo hérité
- Ajout de la commande
!lmsourcesinfo <module>
pour afficher les flux sourcelink à partir de pdb (pour faciliter le débogage des problèmes liés à sourcelink).
- Ajout de la commande
Problèmes connus
Lors de la spécification d’une liste de modules à enregistrer avec TTD, la spécification de plus d’un module ne fonctionne pas dans cette version.
1.2308.2002.0
Plusieurs corrections des bogues et de petites améliorations.
1.2306.12001.0
Plusieurs corrections des bogues et de petites améliorations.
1.2303.30001.0
Remarque
Le débogueur WinDbg Preview a été renommé WinDbg.
Le débogueur hérité publié avec les Outils de débogage pour Windows sera référencé en tant que WinDbg (classique).
Débogage de voyage dans le temps sur ARM64
Non seulement WinDbg fonctionne en mode natif sur ARM64, mais nous avons également activé le Débogage de voyage dans le temps (TTD) des processus ARM64 natifs. Vous pouvez désormais enregistrer facilement les processus ARM64 natifs (et les processus x86 et ARM32) et les déboguer facilement, même sur votre ordinateur x64. La prise en charge des processus x64 ou x64 (ARM64EC) sur les appareils ARM64 n’est pas encore disponible.
Les performances globales du TTD ont également été améliorées, avec une surcharge d’enregistrement sensiblement réduite pour les processus qui utilisent des instructions SIMD courantes. Au total, ce sont 65 nouvelles instructions qui ont été optimisées, de MMX à SSE 4.2, AVX et AVX2.
Résolution des points d’arrêt ambigus
Les points d’arrêt ambigus permettent au débogueur de définir des points d’arrêt dans certains scénarios où une expression de point d’arrêt se résout à plusieurs emplacements. Pour en savoir plus, consultez Résolution des points d’arrêt ambigus.
1.2107.13001.0
Recherche regex
La recherche WinDbg Preview inclut désormais l’option permettant de rechercher à l’aide d’expressions régulières (regex). Activez Regex dans la fenêtre dans laquelle vous souhaitez effectuer une recherche en faisant Ctrl+F, puis régler le bouton étiqueté .*
en regard de la zone de recherche.
Mode restreint
Le mode restreint est un paramètre optionnel qui permet de limiter le type de sessions de débogage que WinDbg Preview peut lancer aux seules sessions de débogage à distance et aux fichiers de vidage. Pour en savoir plus, consultez WinDbg - Mode restreint.
Prise en charge des variables ombrées
Dans les versions précédentes, WinDbg générait des erreurs de type « Ambiguous Symbol » lorsqu’il essayait d’évaluer ( ??) ou d’afficher (dx) une variable dont le nom était identique à celui d’une autre variable dans la portée. Windbg lèvera désormais l’ambiguïté sur les variables qui partagent le même nom en ajoutant @n
au nom de la variable. Par exemple : foo@0
, foo@1
Cette modification sera également reflétée dans la fenêtre « Variables locales ». Auparavant, seule la variable la plus proche dans la portée s’affichait.
1.2104.13002.0
Sélection et recherche intelligentes de numéros
Une fonction de productivité pratique de WinDbg Preview est la capacité de détecter des modèles dans la fenêtre de commande. Pour ce faire, sélectionnez un texte, et toutes les autres occurrences de ce texte sont mises en surbrillance. Cette mise en évidence étant utile pour examiner les modèles de mémoire, elle met désormais également en évidence les nombres équivalents dans d’autres bases, quelle que soit la manière dont le nombre mis en forme en hexadécimal, en décimal ou en notation scientifique. Pour en savoir plus sur les schémas de numérotation, consultez n (Définir la base numérique).
Exemple :
Lors de la sélection 0x000001e2fb3f6160
, toutes les autres instances sont mises en surbrillance, quel que soit la mise en forme.
Cette fonctionnalité fonctionne également avec des mises en évidence semi-temporaires. Ctrl + double clic sur un nombre pour mettre en évidence toutes ses occurrences. Vous pouvez ainsi suivre plusieurs numéros importants dans l’historique de vos commandes (pour effacer la surbrillance, cliquez à nouveau sur le numéro avec Ctrl + double clic). Enfin, cette fonctionnalité fonctionne également lors de la recherche de nombres avec Ctrl + F.
Accès étendu au code source
La commande du chemin d’accès la source .srcpath, .lsrcpath (Définir le chemin source) a été mise à jour pour inclure une nouvelle balise : DebugInfoD. Pour plus d’informations, consultez Source Code Extended Access (Accès étendu au code source).
États hôtes et invités des processus WOW dans le modèle de données
Lors du débogage d’un processus WOW 32 bits à partir d’un contexte 64 bits, les utilisateurs peuvent désormais accéder aux états hôtes et invités dans le modèle de données.
Exemples d’états invités 32 bits :
dx @$curprocess.Environment
dx @$curthread.Environment
dx @$curthread.Stack
Exemples d’états hôtes 64 bits :
dx @$curprocess.NativeEnvironment
dx @$curthread.NativeEnvironment
dx @$curthread.NativeStack
Améliorations du débogage Javascript
JavaScript chargé dans l’interface utilisateur peut désormais être directement débogué dans la console à l’aide de la commande .scriptdebug. Pour en savoir plus, consultez Script du débogueur JavaScript - Débogage JavaScript.
Améliorations de l’accessibilité
Avec WinDbg Preview, nous nous engageons à créer un débogueur qui soit accessible aux ingénieurs souffrant d’un handicap, et nous améliorons continuellement l’accessibilité. Les améliorations suivantes ont été apportées.
- Il est désormais possible de cliquer sur les liens de la fenêtre de commande à l’aide du clavier (Maj+Entrée)
- Amélioration de la navigation au clavier dans le menu principal
- Amélioration de la navigation au clavier dans le ruban
- Contraste accru des éléments de l’interface utilisateur
Nouveau type d’accès aux données « Remplacer » pour le débogueur de voyage dans le temps
Le débogueur de voyage dans le temps (TTD) fournit désormais un type d’accès aux données « Remplacer ». Les requêtes mémoire telles que dx $@cursession.TTD.Memory()
présentent désormais une colonne supplémentaire affichant les anciennes valeurs d’écriture.
Autres correctifs, améliorations et mises à jour
- Ajout d’une fonctionnalité permettant de détecter et d’appliquer automatiquement une solution de contournement pour les problèmes matériels liés à l’USB 3.1 lorsque l’hôte de débogage du noyau et la cible sont tous deux des contrôleurs USB 3.1.
- Ajout d’un nouveau raccourci d’interface utilisateur : Ctrl + Maj + Cliquer sur un lien DML pour le copier dans le Presse-papiers
1.0.2007.01003
Marque-pages de la chronologie
Marquer les positions importantes de Voyage dans le Temps dans WinDbg au lieu de copier-coller manuellement la position dans le bloc-notes. Les marque-pages facilitent la visualisation en un coup d’œil des différentes positions dans la trace par rapport à d’autres événements, et permettent de les annoter.
Vous pouvez fournir un nom descriptif pour les marque-pages.
Accédez aux marque-pages via la fenêtre des chronologies disponible dans Affichage > Chronologies. Lorsque vous survolez un marque-page, il affichera le nom du marque-page.
Vous pouvez sélectionner sans relâcher (ou faire un clic droit) le marque-page pour voyager jusqu’à cette position, renommer ou supprimer le marque-page.
Fenêtre « Modules »
Une nouvelle fenêtre affiche les modules et leurs informations connexes. Il est disponible via le ruban « Affichage ». Il affiche :
- Le nom du module incluant l’emplacement du chemin
- La taille en octets du module chargé
- L’adresse de base à laquelle le module est chargé
- Version du fichier
Noms/descriptions de threads disponibles dans le débogage en direct
Les noms de threads définis à partir de SetThreadDescription sont désormais disponibles lors du débogage direct en mode utilisateur. Les noms de threads sont disponibles à l’aide de la commande « ~ » ou du modèle de données du débogueur.
0:000> ~
0 Id: 53a0.5ffc Suspend: 1 Teb: 000000b1`db1ed000 Unfrozen "Hello world!"
7 Id: 53a0.9114 Suspend: 1 Teb: 000000b1`db1ef000 Unfrozen
8 Id: 53a0.2cc4 Suspend: 1 Teb: 000000b1`db1f1000 Unfrozen
9 Id: 53a0.5c40 Suspend: 1 Teb: 000000b1`db1f3000 Unfrozen
0:000> dx @$curthread
@$curthread : ConsoleTestApp!ILT+25(mainCRTStartup) (00007ff7`fac7101e) [Switch To]
Id : 0x5ffc
Name : Hello world!
Stack
Registers
Environment
Prise en charge de PDB portable
La prise en charge de PDB portable a été ajoutée. Le format PDB portable (base de données du programme) décrit un encodage des informations de débogage produites par les compilateurs de langages CLI (Common Language Infrastructure) et consommées par les débogueurs et d’autres outils. Pour en savoir plus, consultez Symboles PDB portable.
Autres changements et correctifs de bogues
- WinDbg prend désormais en charge le débogage de l’image mémoire du noyau AMD64 et Linux.
- Amélioration de l’enregistrement des voyages dans le temps et autres correctifs.
1.0.1912.11001
Chronologies des TTD : nous avons ajouté une nouvelle fenêtre qui affiche une représentation visuelle des événements importants dans votre trace : exceptions, points d’arrêt, appels de fonction et accès à la mémoire. Les chronologies ouvrent et affichent automatiquement des exceptions (le cas échéant) et des points d’arrêt. Pour en savoir plus, consultez Chronologies de WinDbg Preview.
Basculement vers la fenêtre de chrome par défaut : la fenêtre de chrome personnalisée que nous utilisions, bien que plus jolie, causait des problèmes de mise à l’échelle et de redimensionnement pour un nombre important de personnes, et nous avons donc décidé de la supprimer pour le moment.
Amélioration de la navigation au clavier dans le menu des fichiers : il est désormais beaucoup plus facile de naviguer dans le menu des fichiers à l’aide du clavier.
Autres changements et correctifs de bogues
- La fenêtre de la pile et des variables locales sera désormais désactivée avec votre cible en cours d’exécution et n’affichera pas « Erreur non spécifiée » en l’absence de cible.
- Ajout d’une colonne « Services » à la boîte de dialogue d’attachement pour savoir facilement quels services sont en cours d’exécution.
- Correction d’un bogue qui empêchait la détection de l’architecture lors du lancement d’applications avec des arguments.
- Le désassemblage a été amélioré dans la fenêtre de désassemblage lorsque des symboles privés sont chargés.
- jsprovider.dll est désormais chargé automatiquement. Nous avons donc supprimé le bouton « Charger JSProvider » du ruban de script.
1.0.1908.30002
Améliorations apportées aux objets d’appel TTD - : les requêtes d’appel incluent désormais les noms, les types et les valeurs des paramètres. Lors de l’interrogation des traces pour les appels de fonction, vous pouvez obtenir des paramètres entièrement typés et leurs valeurs, ce qui facilite le filtrage des résultats par paramètre.
Prise en charge d’Open Enclave : WinDbg Preview peut désormais déboguer les applications Open Enclave (OE). Pour en savoir plus, consultez Débogage Open Enclave.
Vidages principaux des ELF : dans le cadre de la prise en charge d’Open Enclave, WinDbg peut ouvrir des vidages principaux et des binaires ELF ainsi que des symboles DWARF (DWARF 5 n’est pas pris en charge actuellement) à partir d’enclaves et d’applications Linux. Lors de l’ouverture d’un vidage principal à partir d’une application non-Windows, les fenêtres de base et les commandes doivent toutes fonctionner correctement, ce qui ne sera pas le cas de la plupart des extensions et des commandes spécifiques à Windows. Les fichiers ELF et DWARF seront téléchargés à partir de serveurs de symboles conformément aux conventions clés définies ici. Les enclaves sont le seul scénario pris en charge, mais nous sommes ouverts à des commentaires sur l’ouverture d’autres vidages principaux Linux.
Modification du format de fichier TTD : nous avons apporté une mise à jour majeure au format de fichier pour les traces TTD qui entraîne la rupture de la compatibilité ascendante. Les versions précédentes de WinDbg Preview ne pourront pas ouvrir les traces enregistrées avec ces versions (et celles ultérieures) de WinDbg Preview, mais ces dernières pourront ouvrir les traces nouvelles et anciennes.
Autres modifications
- TTD utilisera désormais le moteur 64 bits pour l’indexation et le nombre de bits approprié du moteur de débogage pour les relectures, afin de minimiser les problèmes de mémoire potentiels lors de l’indexation et les problèmes de SOS lors de la relecture.
- L’exécution de « dx » sans aucun paramètre affiche désormais l’espace de noms racine pour faciliter la navigation.
- Vous pouvez désormais modifier le symbole par défaut et l’emplacement du cache source via le menu paramètres.
- Amélioration de la prise en charge de l’enregistrement d’AVX-512 (l’enregistrement d’AVX-512 provoquera une lenteur supérieure à la normale).
- Nous avons activé les licences en mode hors connexion.
1.0.1905.12001
Améliorations de l’atténuation de l’erreur SymSetDiaSession : notre correctif du mois dernier pour atténuer l’erreur causée par les applications injectant DbgHelp dans notre processus ne fonctionnait toujours pas dans certains scénarios. Nous y avons apporté des améliorations et nous continuerons à examiner les commentaires sur cette erreur.
Personnalisation des couleurs d’accentuation : de nombreux scénarios nécessitent l’ouverture de plusieurs instances de WinDbg, et le fait de passer de l’une à l’autre peut être déroutant et prendre un certain temps pour déterminer laquelle est la « bonne ». Nous avons ajouté la possibilité de modifier la couleur d’accentuation bleue pour aider à distinguer visuellement les sessions et faciliter le passage de l’une à l’autre.
Sélectionnez simplement le ruban Affichage et sélectionnez une option pour la Couleur d’accentuation dans la dernière section. Lorsque des sessions futures seront lancées à partir de cibles récentes, la couleur d’accentuation sera conservée dans l’espace de travail de la cible.
Améliorations de la tokenisation des fichiers sources : la fenêtre source dispose désormais d’un support de base pour la tokenisation de fichiers sources Rust et C++ SEH __try/__except/__finally/__leave.
Améliorations des coroutines : amélioration de la prise en charge des variables locales de coroutine et de certaines variables optimisées.
Paramètres par défaut du symbole et du cache source : ajout d’une option au menu paramètres sous Paramètres de débogage pour modifier l’emplacement du cache pour les symboles. Remarque : il existe un problème connu qui empêche le chargement de la source si ce champ est vide. Nous allons ajouter la validation pour empêcher cela de se produire dans une prochaine version.
Correctifs -pv : correction d’un bogue qui aurait pu empêcher -pv (attachement non invasif) de fonctionner dans certaines circonstances.
1.0.1904.18001
Correctif pour l’erreur SymSetDiaSession : depuis un certain temps, on nous signale une erreur qui empêche le lancement de WinDbg Preview dans certaines situations. Il existe quelques applications externes qui tentent d’injecter une version de DbgHelp dans notre processus avant de le charger. Certaines d’entre elles utilisent une version de DbgHelp avec des fonctionnalités manquantes, ce qui provoque cette erreur lorsqu’on essaie d’utiliser ces fonctionnalités. Nous avons ajouté un correctif pour régler ce problème et nous vérifierons si ce problème se produit encore dans d’autres scénarios.
Contrôle de la police : nous avons ajouté des paramètres pour contrôler la police et sa taille. Il existe deux réglages différents : l’un pour les fenêtres de texte (fenêtres à espacement fixe telles que désassemblage, source, commande, etc.), l’autre pour les fenêtres d’outils (variables locales pile, etc.). Il reste encore quelques domaines qui ne sont pas affectés par ces options et que nous mettrons à jour à l’avenir.
Amélioration de la mise en surbrillance : la mise en surbrillance persistante du texte dans la fenêtre de commande met désormais également en surbrillance le texte dans les fenêtres source et notes.
Améliorations du chargement des sources : nous avons modifié le mode de chargement des fichiers sources. Auparavant, lors de l’ouverture d’un fichier source, les opérations du moteur, comme l’exécution de commandes supplémentaires, n’étaient pas possibles ou imprévisibles. Nous avons modifié l’emplacement du chargement pour améliorer le parallélisme et la fiabilité de l’annulation des opérations d’ouverture de la source.
Autres changements et correctifs de bogues :
- Ajout de « Accéder au désassemblage » dans le menu contextuel de la fenêtre source.
- Ajout d’une case à cocher pour Suivre les instructions actuelles » dans la fenêtre de désassemblage.
- Correction d’un bogue qui ralentissait l’exécution de la fenêtre de commande lors de la production d’un grand nombre de textes.
- Modification des touches « Page suivante » et « Page précédente » pour qu’elles fonctionnent de la même manière que celles de Visual Studio.
- Lorsqu’un fichier ASM est ouvert dans la fenêtre source, les commentaires de base, les chaînes et les instructions sont mis en surbrillance
1.0.1812.12001
Cette version inclut ces mises à jour.
En-tête C++ du modèle de données du débogueur : un nouvel en-tête C++, DbgModel.h, inclus dans le kit SDK Windows a été créé pour étendre le modèle de données du débogueur via C++. Vous trouverez plus d’informations dans Vue d’ensemble du modèle de données du débogueur C++. Cette version inclut une nouvelle extension qui ajoute des fonctionnalités de « style API » supplémentaires au modèle de données du débogueur accessible via la commande « dx », JavaScript et l’en-tête DbgModel.h. Cette extension permet d’étendre le modèle de données afin d’inclure des connaissances sur l’exécution de l’assembly et du code via l’espace de noms Debugger.Utility.Code et le système de fichiers local via l’espace de noms Debugger.Utility.FileSystem.
Extension des types synthétiques : avec cette nouvelle extension d’API, nous avons un nouvel exemple sur notre dépôt GitHub ici - https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes. Cette extension JavaScript lit les fichiers d’en-tête C de base et définit des informations de type synthétique pour les structures et les unions définies dans l’en-tête. Grâce à la commande dx, la mémoire peut alors être visualisée de manière structurée, comme si vous disposiez d’une PDB contenant des informations sur les types en question.
Autres changements et correctifs de bogues :
- WinDbg Preview gère désormais de façon plus intelligente le passage au premier plan de la fenêtre sources ou de la fenêtre de désassemblage lors de l’exécution pas à pas.
- Réorganisation du titre de la fenêtre winDbg Preview pour afficher plus d’informations importantes au début du débogage du noyau.
- Le contraste de l’arrière-plan alterné dans la fenêtre de commande devrait être légèrement plus visible.
1.0.1810.2001
Cette version inclut ces mises à jour.
- Boîte de dialogue « Nouveaux paramètres » accessible à partir du menu Fichier ou du ruban Accueil.
- Boîte de dialogue de paramétrage des événements et des exceptions. Ce menu modifie la façon dont le débogueur gère les événements et les exceptions, l’équivalent des commandes « sx » ou la boîte de dialogue des filtres d’événements de WinDbg. Sélectionnez Paramètres dans le ruban de l’accueil, puis appuyez sur « Événements et exceptions » sur la gauche pour gérer ces derniers.
- Amélioration de l’indexeur TTD pour des performances accrues. Cela augmente les performances de l’indexation des fichiers de trace TTD, ce qui rend le processus d’indexation beaucoup plus rapide (entre 2x-10x) et les fichiers d’index beaucoup plus petits (environ 50 % plus petits). Les améliorations des performances sont les plus notables pour les traces de plus de 4 Go ou lors de l’utilisation d’une machine avec de nombreux cœurs de processeur (plus de 8). Le nouvel indexeur permet de déboguer plus facilement des traces très volumineuses (plus de 50 Go).
- Nouvel indicateur de lancement debugArch pour spécifier l’architecture. WinDbg Preview tente de lancer le moteur du débogueur avec le nombre de bits correct sur la cible pour une prise en charge améliorée du débogage du code managé. Dans certaines circonstances, il ne parvient pas à déterminer le nombre de bits appropriés ou vous pouvez vouloir ignorer ce qu’il décide. Utilisez -debugArch x86|amd64 pour contrôler l’architecture du moteur du débogueur.
Autres changements et correctifs de bogues :
- Correction d’un bogue qui entraînait l’apparition de barres noires sur un débogueur en plein écran avec une fenêtre flottante ouverte.
- Correction d’un bogue qui entraînerait l’effacement involontaire des options de symbole.
- L’historique des commandes est désormais conservé lors du lancement à partir de cibles récentes.
- Dans la fenêtre du modèle de données, vous pouvez désormais modifier des valeurs.
- Désormais, il sera plus clair que les traces TTD non indexées ne le sont pas.
- Amélioration des performances de la fenêtre des variables locales
- Ajout d’un bouton au ruban pour enregistrer les journaux de la fenêtre de commande dans un fichier.
- Ajout de . de SelectMany(<projection>) sur l’ensemble par défaut de méthodes LINQ.
1.0.1807.11002
Cette version inclut ces mises à jour.
Enregistrement et chargement automatiques des points d’arrêt. Il s’agit d’une première étape pour remplacer les espaces de travail. Nous commençons à nous engager dans cette voie en permettant l’enregistrement et le chargement des points d’arrêt. Le lancement d’un élément que vous avez débogué précédemment à partir de l’onglet « Récents » dans le menu fichier charge désormais les points d’arrêt de cette session. Le but est de développer cette fonctionnalité pour conserver davantage d’informations d’une session à l’autre. Les points d’arrêt matériels (ba) et d’autres propriétés diverses relatives aux points d’arrêt, telles que les contextes spécifiques aux threads et aux processus, ainsi que les conditions, ne sont pas actuellement sauvegardés.
Modifications et correctifs de bogues mineurs :
- Ajout d’options de ligne de commande -x, -xe, -xd, -xn et -xi pour contrôler la gestion des exceptions et des événements. Ces options de ligne de commande se comportent comme leurs homologues de commande.
- La fenêtre des notes prend désormais en charge les formats gras, souligné et italique.
- Correction de problèmes de zoom et de défilement.
- La sélection de texte dans la commande, la mémoire, les sources ou les fenêtres de désassemblage affiche désormais une mise en surbrillance légère par rapport à d’autres instances du texte sélectionné.
- Correction d’un bogue dans lequel le chargement des symboles d’interruption entraînait l’échec du chargement des symboles pour le reste de la session.
- NatVis se recharge désormais correctement lors du redémarrage d’une session.
1.0.1805.17002
Cette version inclut ces mises à jour.
Nouvelle fenêtre de désassemblage : la fenêtre de désassemblage comprend désormais :
- Le défilement vers le haut ou vers le bas permet de charger en continu d’autres désassemblages lorsque cela est possible.
- Mise en surbrillance de la syntaxe pour les nombres, les adresses de code et les opcodes.
- La sélection d’un symbole de code fait passer la fenêtre de désassemblage à cet endroit.
- En passant la souris sur les nombres, une infobulle s’affiche et permet de convertir le nombre en d’autres bases.
- En-têtes signifiant le déclenchement d’une fonction.
Fenêtre source plus rapide : la fenêtre source a été mise à jour pour être plus rapide et plus économe en ressources.
Modifications et correctifs de bogues mineurs :
- Correction des problèmes liés à la mise en cache des symboles
- Correction de quelques cas où basculer l’arrêt initial n’était pas possible lorsque la cible n’était pas interrompue
- En appuyant sur la touche de tabulation dans la fenêtre de commande, alors que rien n’est disponible, le curseur reste dans le champ de saisie
- WinDbg Preview détecte désormais automatiquement le nombre de bits lors de l’ouverture de fichiers CAB
1.0.1804.18003
Cette version inclut ces mises à jour.
Améliorations de l’état des symboles et de l’annulation : le débogueur affiche parfois les symboles de chargement OCCUPÉ et il est difficile de déterminer ce qu’il fait et pourquoi sans !sym noisy activé. Nous avons mis à jour WinDbg Preview afin d’améliorer la communication sur ce qu’il fait lors du chargement des symboles pour aider à résoudre les problèmes. Au-delà d’une meilleure visibilité sur ce qui se passe, nous avons effectué quelques changements qui devraient rendre l’annulation des symboles plus fiable et la fenêtre « Journaux » contiendra certains des détails qui sont normalement affichés lorsque !sym noisy est activé. Si vous appuyez sur Affichage -> Journaux, vous obtiendrez le résultat complet du chargement bruyant des symboles sans devoir l’activer et essayer de recharger les symboles.
Fenêtre « Notes » expérimentale : WinDbg Preview dispose désormais d’une fenêtre pour prendre des notes. Appuyez simplement sur Affichage -> « Notes » pour l’ouvrir. Si vous faites un copier/coller dans cette fenêtre, les liens DML seront préservés et fonctionneront comme s’il s’agissait de la fenêtre de commande. Vous pouvez également enregistrer et charger des fichiers de notes à partir du ruban « Notes » lorsque la fenêtre est ouverte.
Fenêtre source plus rapide expérimentale : pour améliorer les performances de WinDbg Preview, une nouvelle fenêtre source expérimentale est un peu plus efficace. Il y a encore quelques lacunes au niveau des menus contextuels et de la mise en évidence de la syntaxe, mais nous voulons donner à tout le monde la possibilité de l’essayer avant la finalisation pour nous donner un premier retour d’information. Exécutez $UseFastSourceWindow pour l’utiliser. Si vous voulez revenir à l’ancienne, exécutez $UseMonacoSourceWindow. Le réglage sera conservé d’une session à l’autre, mais vous devrez fermer et rouvrir les fenêtres sources pour obtenir la nouvelle version.
API JSProvider version 1.2 : pour les extensions JavaScript qui déclarent prendre en charge la version 102 de de l’API :
- Tout objet avec une méthode .compareTo qui sort du script aura un comparateur personnalisé pour lui (les opérateurs de comparaison fonctionneront dans l’évaluateur DX et ailleurs : par exemple : IModelObject::Compare)
- Tout objet avec une méthode .equals qui sort du script aura un opérateur d’égalité personnalisé pour lui (== et != fonctionneront dans l’évaluateur DX et ailleurs : par exemple : IModelObject ::IsEqualTo)
- Les objets natifs ou de modèle de données qui entrent dans le script auront .compareTo et .equals pour eux, ce qui permet d’accéder à n’importe quel comparateur personnalisé ou à des implémentations d’égalité personnalisées.
Modifications et correctifs de bogues mineurs :
- .server répertorie désormais le nom de domaine complet pour faciliter l’utilisation en cas de problèmes de domaine liés à des noms courts.
- Ctrl+G fonctionne désormais dans la fenêtre source.
- Ajout de la barre d’adresse à la fenêtre de désassemblage.
- WinDbg Preview gère désormais _NT_SYMBOL_PATH de manière plus prévisible.
- Ajout de l’option de ligne de commande -server.
- Les requêtes de modèle de données TTD peuvent désormais être affichées progressivement. Par conséquent, si vous l’interrompez, vous verrez toujours des résultats. Cette fonctionnalité est encore expérimentale et facultative. Exécutez
dx $@cursession.TTD.AsyncQueryEnabled = 1
pour l’activer. - La commande « dps » contient désormais des liens vers les fichiers sources auquel elle fait référence.
1.1801.19001.0
Cette version inclut ces mises à jour.
Mise en surbrillance du texte : vous pouvez désormais mettre en surbrillance toutes les occurrences de texte sélectionné directement dans le débogueur. Pour utiliser cette fonctionnalité, sélectionnez simplement du texte dans la fenêtre de commande, puis « Mettre en surbrillance » dans le ruban de commandes ou appuyez sur Ctrl+Alt+H. L’utilisation de l’une de ces méthodes sur du texte déjà mis en surbrillance supprime cette dernière.
Si vous préférez utiliser des commandes, vous pouvez utiliser « $hl » :
$hl ["someValueHere"]
: Mettre en surbrillance un texte donné (ou annuler la mise en surbrillance existante)
$hl clearAll
: effacer toutes les entrées mises en surbrillance
$hl caseSensitive [1|0]
: définir la mise en évidence comme sensible à la casse ou insensible à la casse (par défaut, insensible à la casse)
Cette version inclut également quelques correctifs de bogues mineurs.
1.1712.15003.0
Cette version inclut ces mises à jour.
Requêtes de mémoire TTD : vous pouvez désormais interroger TTD pour des accès mémoire de la même manière que vous interrogez les appels aujourd’hui. On peut ainsi rechercher toutes les lectures, écritures et exécutions qui accèdent à une plage spécifique de mémoire.
Exemple de lecture et d’écriture : dx $@cursession.TTD.Memory(startAddress, endAddress, "rw")
Exemple d’exécution unique : dx $@cursession.TTD.Memory(startAddress, endAddress, "ec")
Modifications des paramètres : WinDbg Preview enregistre désormais automatiquement les paramètres d’une session à l’autre, y compris le chemin des symboles et le chemin source.
Améliorations de JavaScript
- Les nombres et les numériques 64 bits en JavaScript contiennent désormais une méthode modulo permettant une opération de modulo 64 bits.
- Les objets définis en JavaScript peuvent désormais implémenter une notion de comparabilité ou d’équivalence personnalisée qui fonctionnera dans dx à l’aide d’opérateurs C++ standard ou dans des opérations LINQ. Pour pouvoir l’utiliser, le script doit déclarer dans le tableau initializeScript qu’il prend en charge une nouvelle version de l’API hôte en insérant un enregistrement « new host.apiVersionSupport(1, 2) ». Une fois que vous avez terminé, vous pouvez utiliser ces fonctions dans n’importe quelle requête LINQ de la fenêtre de modèle de données ou « dx ». Si la méthode implémente .compareTo(other), elle est comparable (les opérateurs de comparaison fonctionnent dans dx et LINQ). Si la méthode renvoie une valeur négative, telle que « this < other ». Si la méthode renvoie zéro, « this == other ». Si la méthode renvoie une valeur positive « this > other ». Si la méthode implémente .equals(other), elle est équivalente (== fonctionne dans dx et LINQ). La méthode doit renvoyer true ou false.
Modifications et correctifs de bogues mineurs :
- Correction d’un bogue à cause duquel la pile et les fenêtres des variables locales ne fonctionnaient pas pendant le débogage de démarrage
- Mise à jour de la sortie de LM pour indiquer plus précisément ProductVersion et des champs similaires
- Activation du bouton « Revenir en arrière » pendant les sessions TTD
- Ajout de la prise en charge de -lsrcpath
- Les en-têtes dans les fenêtres des variables locales, d’observation et de modèle ne disparaissent pas lors du défilement vers le bas
- Lorsque l’on revient à WinDbg Preview en utilisant ALT+Tab, la fenêtre de commande conserve correctement l’emplacement du curseur
- Ajout du raccourci Ctrl+Alt+V pour basculer vers le mode détaillé
- Vous pouvez désormais désactiver le défilement automatique de la fenêtre de commande en sélectionnant, sans relâcher (ou en cliquant avec le bouton droit), l’onglet de la fenêtre de commande et en choisissant « Désactiver le défilement automatique »
- Vous pouvez désormais déboguer les processus enfants via la page avancée du lancement exécutable.
1.0.14.0
Cette version inclut ces mises à jour.
Amélioration du fonctionnement du serveur de processus : ajout d’une nouvelle notification dans le menu « Fichier » pour afficher le serveur de processus auquel vous êtes connecté et avec lequel vous interagissez. Dans le cadre de ces modifications, à la fin d’une session de débogage, la connexion au serveur de processus persiste et peut être finalisée dans le menu « Fichier ».
Nouvelles options de disposition prédéfinies dans le ruban « Affichage » : il existe une nouvelle option « Dispositions » dans le ruban « Affichage ». Il existe actuellement trois dispositions : par défaut, axée sur le désassemblage et minimale.
Ruban de débogage de voyage dans le temps : un ruban de voyage dans le temps amélioré s’affiche lors du débogage d’une trace de débogage de voyage dans le temps.
Métadonnées à partir de scripts JavaScript : les extensions JavaScript peuvent désormais renvoyer des métadonnées pour les propriétés et d’autres constructions. Ainsi, l’extension peut fournir des chaînes d’aide, indiquer la base d’affichage pour les valeurs, et bien plus encore. Les métadonnées sont fournies en plaçant un descripteur de métadonnées sur un objet, soit par la présence de Symbol.metadataDescriptor, soit par un appel explicite à host.metadata.defineMetadata. Les renvois de fonction, les valeurs itérées et d’autres contextes de valeur peuvent renvoyer des métadonnées pour leur valeur via host.metadata.valueWithMetadata.
Mises à jour de l’API JavaScript : des modifications potentiellement décisives au niveau de la source ont été apportées aux API du fournisseur JavaScript (y compris de nouvelles méthodes et propriétés projetées sur les objets natifs). Les extensions existantes ne verront aucun des changements potentiellement décisifs sans indiquer qu’elles prennent en charge une nouvelle version de l’API JsProvider. La prise en charge de la nouvelle version de l’API est indiquée en plaçant un enregistrement host.apiVersionSupport dans le tableau renvoyé par initializeScript avec une déclaration de prise en charge de la version 1.1. peut-être ? .. avec une valeur indiquant la prise en charge de la version 1.1.
Les modifications apportées à la version 1.1 de l’API sont notamment les suivantes :
- host.getModuleSymbol et host.getModuleType renvoient « null » s’ils ne trouvent pas le symbole au lieu de lever une exception.
- Tous les objets natifs ont la propriété d’adresse sur eux en plus de .targetLocation. Si l’objet n’a pas d’adresse, une exception est levée lors de l’accès à la propriété.
- Tous les objets natifs ont de nouvelles méthodes .getObjectVTous les objets natifs disposent de nouvelles méthodes .getObjectValue et .setObjectValue pour accéder aux propriétés de l’objet qui peuvent entrer en conflit avec les noms que JavaScript attribue à l’objet (par exemple : « adresse »).
Modifications supplémentaires apportées à JavaScript
- Les extensions JavaScript peuvent désormais ajouter et supprimer des propriétés sur des objets de modèle de données via Object.defineProperty et l’opérateur delete. L’ajout ou l’enregistrement d’une classe JavaScript en tant que modèle parent ou signature de type reste le moyen privilégié de manipuler le modèle d’objet.
- Les extensions JavaScript peuvent désormais modifier des variables globales au sein des modules dans la cible de débogage via une nouvelle API host.setModuleSymbol.
- Toutes les fonctions mathématiques qui se trouvent dans la bibliothèque de type 64 bits (par exemple : .add, .subtract, .multiply, .divide, etc...) sont désormais présentes dans les nombres JavaScript.
- Les fonctions et propriétés JavaScript peuvent désormais renvoyer des valeurs qui sont des énumérations par le biais du marshaling personnalisé. Une fonction ou un accesseur de propriété peut renvoyer host.typeSystem.marshalAs(valeur, type...) afin d’évoquer ce marshaling personnalisé.
- La commande point d’arrêt du débogueur de script peut désormais s’arrêter sur les noms de fonctions en plus des positions de ligne/colonne.
- Les objets de type dans les extensions JavaScript ont accès à leur module contenant via la propriété .containingModule.
Modifications et correctifs de bogues mineurs :
- Correction de la mise en forme des onglets du ruban conditionnel pour les rendre moins confus.
- Remaniement du DML pour une analyse plus stricte afin d’améliorer les performances.
- Plusieurs correctifs concernant les performances et le comportement de CTRL+F.
- Ajout d’un avertissement lors de l’exécution sans élévation de privilèges avant d’essayer d’utiliser TTD.
- Ajout d’une option permettant d’ignorer la détection automatique du nombre de bits de la cible.
- Désactivation de différents menus de fichier et d’options de ruban lorsqu’ils ne peuvent pas être utilisés (par exemple, « Go » dans un fichier de vidage).
Problèmes connus :
- SOS ne fonctionnera pas sur les traces x86.
1.0.13.0
Cette version ajoute le traçage du voyage dans le temps. Le débogage de voyage dans le temps vous permet d’enregistrer un processus, puis de le rejouer plus tard, à l’endroit et à l’envers. Le débogage de voyage dans le temps (TTD) peut faciliter le débogage en vous permettant de « rembobiner » votre session de débogage, au lieu de devoir reproduire le problème jusqu’à trouver le bogue. Pour plus d’informations, consultez la section Débogage de voyage dans le temps - Présentation.
1.0.12.0
Cette version était la première de WinDbg Preview. Pour obtenir des informations générales sur les fonctionnalités disponibles dans WinDbg Preview, consultez Principales fonctionnalités de WinDbg.