Share via


Notes de publication

Logo de WinDbg avec une loupe inspectant des octets.

Cette rubrique fournit des informations sur les nouveautés de WinDbg. Les versions antérieures ont été publiées en préversion de WinDbg.

1.2402.24001.0

Nouvelles fonctionnalités

Débogage Live Linux

Vous pouvez désormais déboguer en direct un processus Linux. Pour plus d’informations, consultez ces rubriques :

Débogage de processus distant en direct Linux

Symboles et sources Linux

Le client WinDbg pour un avenir prévisible nécessite toujours Windows, car WinDbg ne s’exécute pas sur Linux.

Enregistrer un sous-ensemble d’exécution avec le débogage de voyage dans le temps

Vous pouvez maintenant spécifier une liste de modules à enregistrer pour concentrer le TTD sur les modules dont vous vous souciez. Cela peut réduire considérablement la surcharge d’enregistrement. Pour utiliser cela, il vous suffit de case activée « Sous-ensemble d’enregistrements d’exécution » dans la boîte de dialogue « Configurer et enregistrer », puis spécifiez le ou les modules que vous souhaitez enregistrer. (voir les problèmes connus ci-dessous).

Pour un contrôle plus fin, vous pouvez enregistrer précisément votre programme à l’aide d’une nouvelle API d’enregistrement in-process. Découvrez comment utiliser notre exemple de code et notre documentation.

Fenêtre d’inscription compacte

La nouvelle fenêtre d’inscription ressemble à la sortie de la r commande. Notez que la modification à partir de la nouvelle fenêtre de registre n’est pas encore prise en charge.

Nouveaux paramètres pour e (Entrer des valeurs) dans les commandes mémoire

Les e commandes (Entrer des valeurs) dans la mémoire prennent désormais en charge les adresses physiques comme les commandes (Afficher la d mémoire). Notez que ces options sont uniquement prises en charge en mode noyau :

Option Description
/p Utilise des 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 mise en 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 plus d’informations, consultez e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Entrer des valeurs).

Correctifs de bogues

  • Prise en charge du démangling de nom Rust dans le débogage Linux
  • Améliorations apportées au débogage CLR
    • Ajouter la possibilité de forcer la pile en mode mixte à marcher des images CLR
      • Ajout ForceMixedModeStackWalker du paramètre ajouté à config.xml ou DbgX.xml.
      • Ajout !forceclrmixedmodeunwind de la commande pour les enquêtes ponctuelles ou si vous ne pouvez pas modifier le paramètre de configuration.
  • Améliorations générales du débogage CLR sur Linux
  • Correction d’un certain nombre de problèmes liés aux variables de LinuxKernel.js et par processeur
    • Ajout !runq de la commande à LinuxKernel.js pour pouvoir vider les files d’attente d’exécution du planificateur de noyau par uc (similaires sous forme à la commande de runq l’utilitaire d’incident Linux)
    • Correction de diverses commandes dans LinuxKernel.js pour correspondre aux modifications du noyau : dans les noyaux plus récents, l’arborescence du minuteur utilise des nœuds RB mis en cache au lieu de nœuds RB bruts ; dans les noyaux les plus récents, la liste des all_bdevs est terminée, de sorte que les appareils de blocage sont maintenant parcourus à partir du superblock à la place (blockdev_superblock)
  • Divers correctifs natvis pour fonctionner plus comme les versions récentes de Visual Studio
  • Préférer sourcelink et sourceinfo hérité
    • Ajout !lmsourcesinfo <module> de la commande pour afficher les flux de liaison source à partir de pdb (pour faciliter le débogage des problèmes liés à sourcelink).

Problèmes connus

Lorsque vous spécifiez une liste de modules à enregistrer avec TTD, la spécification de plusieurs modules ne fonctionne pas dans cette version.

1.2308.2002.0

De nombreux correctifs de bogues et de petites améliorations.

1.2306.12001.0

De nombreux correctifs de bogues et de petites améliorations.

1.2303.30001.0

Remarque

Le débogueur a été renommé de WinDbg Preview en 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 s’exécute en mode natif sur ARM64, nous avons également activé le débogage de voyage temporel (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, 65 nouvelles instructions ont été optimisées, allant de MMX à SSE 4.2, AVX et AVX2.

Résolution ambiguë du point d’arrêt

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 plus d’informations, consultez Résolution ambiguë du point d’arrêt.

1.2107.13001.0

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 que vous souhaitez rechercher en effectuant Ctrl+F, puis activez le bouton étiqueté .* en regard de la zone de recherche.

Mode restreint

Le mode restreint est un paramètre facultatif qui peut limiter le type de sessions de débogage winDbg Preview peut commencer à déboguer des sessions à distance et des fichiers de vidage uniquement. Pour plus d’informations, consultez WinDbg - Mode restreint.

Prise en charge des variables ombrées

Dans les versions précédentes, WinDbg lève des erreurs « Symbole ambigu » lors de la tentative d’évaluation ( ??) ou d’affichage (dx) d’une variable qui partage son nom avec une autre variable dans l’étendue. Windbg désambiguera désormais les variables qui partagent le même nom en ajoutant @n le nom de la variable. Par exemple : foo, foo@0@1

Cette modification sera également reflétée dans la fenêtre Locals. Auparavant, seule la variable la plus proche dans l’étendue s’affiche.

1.2104.13002.0

Une fonctionnalité de productivité pratique de WinDbg Preview est la possibilité de détecter des modèles dans la fenêtre de commande. Pour ce faire, sélectionnez n’importe quel texte et toutes les autres instances de ce texte mis en surbrillance. Étant donné que cette mise en surbrillance est utile lorsque vous examinez les modèles de mémoire, elle met désormais en évidence des nombres équivalents dans d’autres rayons, quelle que soit la façon dont le nombre est mis en forme en hexadécimal, décimal ou notation scientifique. Pour plus d’informations sur les schémas de numérotation, consultez n (Définir la base de nombres).

Exemple :

Lors de la 0x000001e2fb3f6160sélection, toutes les autres instances sont mises en surbrillance, quel que soit le format.

Capture d’écran de la fenêtre de commande WinDbg avec plusieurs formats numériques mis en surbrillance.

Cette fonctionnalité fonctionne également avec des points forts semi-temporaires. Ctrl + Double-cliquez sur un nombre pour mettre en surbrillance toutes ses instances. Vous pouvez effectuer le suivi de plusieurs nombres importants tout au long de l’historique des commandes de cette façon (pour effacer la mise en surbrillance, Ctrl + Double-cliquez sur le nombre à nouveau). Enfin, cette fonctionnalité fonctionne également lors de la recherche de nombres avec Ctrl + F.

Accès étendu au code source

La commande .srcpath, .lsrcpath (Set Source Path) 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’état invité 32 bits :

dx @$curprocess.Environment

dx @$curthread.Environment

dx @$curthread.Stack

Exemples d’état hôte 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 plus d’informations, 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 inclusif aux ingénieurs handicapés, nous améliorons en permanence l’accessibilité. Les améliorations suivantes ont été apportées.

  • Les liens de fenêtre de commande peuvent maintenant être cliqués via le clavier (Maj+Entrée)
  • Navigation au clavier améliorée du menu principal
  • Navigation au clavier améliorée du ruban
  • Contraste accru sur les éléments d’interface utilisateur

Nouveau type d’accès aux données « Remplacer » pour le débogueur Time Travel

Le débogueur Debugger Time Travel (TTD) fournit désormais un type d’accès aux données « Remplacer ». Les requêtes mémoire telles que dx @$cursession.TTD.Memory() maintenant ont une colonne supplémentaire affichant les anciennes valeurs d’écritures.

Autres correctifs, améliorations et mises à jour

  • Ajout de la fonctionnalité permettant de détecter et d’appliquer automatiquement la solution de contournement pour le problème matériel USB 3.1 lorsque l’hôte de débogage du noyau et la cible sont 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

Signets de 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.

Capture d’écran de la boîte de dialogue Nouveau signet avec un exemple de nom pour le premier appel d’API dans l’application Afficher le message d’accueil.

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.

Capture d’écran de WinDbg chronologie avec trois signets et une info-bulle affichant le nom du signet.

Vous pouvez sélectionner et conserver (ou cliquer avec le bouton droit) le signet pour atteindre cette position, renommer ou supprimer le signet.

Capture d’écran du menu contextuel du signet avec le bouton droit de la souris avec les options permettant de se déplacer vers la position, la modification et la suppression.

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

Capture d’écran de la fenêtre d’affichage Modules WinDbg affichant cinq modules répertoriés.

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 en mode utilisateur en direct. 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 plus d’informations, consultez Symboles PDB portables.

Autres modifications et correctifs de bogues

  • WinDbg prend désormais en charge le débogage de vidage du noyau AMD64 et Linux.
  • Améliorations apportées à l’enregistrement des déplacements temporels et autres correctifs.

1.0.1912.11001

Chronologies 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 plus d’informations, consultez La préversion de WinDbg - Chronologie.

Basculer vers le chrome de fenêtre par défaut - Le chrome de fenêtre personnalisé que nous utilisions, tandis que prettier, entraînait une certaine mise à l’échelle et des problèmes de redimensionnement pour un nombre notable de personnes. Nous avons donc choisi de le supprimer pour le moment.

Menu Fichier amélioré navigation au clavier : le menu fichier est désormais beaucoup plus facile à naviguer avec un clavier.

Autres modifications et correctifs de bogues

  • La pile et la fenêtre locale sont désormais désactivées lorsque votre cible est en cours d’exécution et n’affiche pas « Erreur non spécifiée » lorsqu’il n’existe aucune cible.
  • Ajout d’une colonne « Services » à la boîte de dialogue d’attachement pour trouver facilement les services en cours d’exécution.
  • Correction d’un bogue qui entraînait le non-fonctionnement de la détection d’architecture lors du lancement d’applications avec des arguments.
  • La fenêtre de désassemblement a amélioré le désassemblement lorsque les 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

Les améliorations apportées aux appels d’objets - TTD appellent désormais des noms de paramètres, des types et des valeurs. Lorsque vous interrogez 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ètres.

Prise en charge d’Open Enclave - WinDbg Preview peut désormais déboguer des applications Open Enclave (OE) pour plus d’informations, consultez Le débogage d’Open Enclave.

Vidages ELF Core - Dans le cadre de la prise en charge d’Open Enclave, WinDbg peut ouvrir des vidages et des fichiers binaires ELF core ainsi que des symboles NAIN (NAIN 5 n’est actuellement pas pris en charge) à 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 tous fonctionner correctement, mais la plupart des extensions et des commandes spécifiques à Windows ne fonctionnent pas. Les fichiers ELF et DWARF seront téléchargés à partir de serveurs de symboles en suivant les 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 de cœurs Linux.

Modification du format de fichier TTD : nous avons apporté une mise à jour majeure au format de fichier pour les traces TTD qui interrompent la compatibilité vers l’avant. Les versions précédentes de WinDbg Preview ne pourront pas ouvrir les traces enregistrées avec ces versions (et ultérieures) de WinDbg Preview, mais ces versions (et futures) pourront ouvrir à la fois de nouvelles traces et d’anciennes traces.

Autres modifications

  • TTD utilise désormais le moteur 64 bits pour l’indexation et le bit du moteur de débogage approprié pour les relectures afin de réduire les problèmes de mémoire potentiels lors de l’indexation et des problèmes 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 facilité de connexion.
  • Vous pouvez maintenant 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 AVX-512 (l’enregistrement d’AVX-512 provoquera une lenteur supérieure à la normale).
  • Nous avons activé les licences hors connexion.

1.0.1905.12001

Améliorations apportées à l’atténuation des erreurs SymSetDiaSession - Notre correctif du mois dernier pour atténuer l’erreur provoquée par l’injection de DbgHelp dans notre processus ne fonctionnait toujours pas dans certains scénarios. Nous y avons apporté des améliorations et nous continuerons à surveiller les commentaires sur cette erreur.

Personnalisation des couleurs d’accentuation : un grand nombre de scénarios ont besoin de plusieurs instances de WinDbg ouvertes, et le fait de se déplacer entre eux peut être déroutant et prendre un certain temps pour déterminer qui est le « droit ». Nous avons ajouté la possibilité de modifier la couleur d’accentuation bleue pour distinguer visuellement les sessions et faciliter l’échange entre eux.

Sélectionnez simplement le ruban Affichage et sélectionnez une option pour la couleur Accentuation dans la dernière section. Lorsque les sessions futures sont lancées à partir de cibles récentes, la couleur d’accentuation est conservée dans le cadre de l’espace de travail de la cible.

Améliorations apportées à la création de jetons sources : la fenêtre source prend désormais en charge la création de jetons de fichiers sources Rust et le __try/__except/__finally/__leave C++ SEH.

Améliorations de coroutine : amélioration de la prise en charge des variables locales coroutine et de certaines variables optimisées.

Paramètre de cache source et de symbole par défaut - 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 entraîne l’échec du chargement de la source. Nous allons ajouter la validation pour empêcher cela de se produire dans une prochaine version.

-pv correctifs - Correction d’un bogue qui aurait pu empêcher -pv (attachement non invasif) de fonctionner dans certaines circonstances.

1.0.1904.18001

Correction de l’erreur SymSetDiaSession : nous avons eu des rapports pendant un certain temps d’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 lorsque nous essayons d’utiliser ces fonctionnalités. Nous avons ajouté un correctif pour cela et effectuerons le suivi s’il existe encore des scénarios dans lesquels il se produit.

Contrôle de police : nous avons ajouté des paramètres pour contrôler la police et la taille de police. Il existe deux paramètres différents, un pour les fenêtres de texte (fenêtres mono-espacées telles que le désassemblement, la source, la commande, etc.) et l’autre pour les fenêtres d’outils (locaux, pile, etc.). Il existe encore quelques domaines qui ne sont pas affectés par ces options que nous allons mettre à jour à l’avenir.

Améliorations apportées : 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 changé lorsque le chargement se produit pour permettre un meilleur parallélisme et une annulation plus fiable des opérations d’ouverture de source.

Autres modifications et correctifs de bogues :

  • Ajout de « Accéder au désassemblage » dans le menu contextuel de la fenêtre source.
  • Ajout d’une case activée box à « Suivre les instructions actuelles » dans la fenêtre désassemblage.
  • Correction d’un bogue qui entraînait l’exécution lente de la fenêtre de commande lors de la sortie d’un grand nombre de texte.
  • Modification des touches de page vers le haut et de la page vers le bas pour qu’elles s’effectuent de la même façon que Visual Studio.
  • Lorsqu’un fichier ASM est ouvert dans la fenêtre source, il dispose désormais d’un commentaire de base, d’une chaîne et d’une mise en surbrillance de directive

1.0.1812.12001

Cette version inclut ces mises à jour.

En-tête C++ du débogueur : il existe un nouvel en-tête C++, DbgModel.h, inclus dans le sdk Windows pour étendre le modèle de données du débogueur via C++. Vous trouverez plus d’informations dans La 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 de 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. Par le biais de la commande dx, la mémoire peut ensuite être vue structurée comme si vous disposiez d’une base de données PDB avec des informations de type pour ces types.

Autres modifications et correctifs de bogues :

  • WinDbg Preview gère désormais plus intelligemment l’apport de fenêtres sources ou de la fenêtre désassemblée au premier plan lors de l’exécution pas à pas.
  • Réorganisation du titre de la fenêtre winDbg Preview pour avoir des informations plus importantes au début du débogage du noyau.
  • Le contraste d’arrière-plan alterné dans la fenêtre de commande doit être légèrement plus visible.

1.0.1810.2001

Cette version inclut ces mises à jour.

  • Boîte de dialogue Nouvelle Paramètres accessible à partir du menu Fichier ou du ruban Accueil.
  • Boîte de dialogue Des événements et des paramètres d’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 filtres d’événements de WinDbg. Sélectionnez Paramètres dans le ruban d’accueil, puis appuyez sur « Événements et exceptions » sur la gauche pour les gérer.
  • Amélioration de l’indexeur TTD avec de meilleures performances. 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) tout en rendant les fichiers d’index beaucoup plus petits (environ 50 % plus petits). Les améliorations de perf sont les plus notables pour les traces de plus de 4 Go de taille, ou lors de l’utilisation d’une machine avec de nombreux cœurs de processeur (8+). Le nouvel indexeur permet de déboguer des traces très volumineuses (50 Go+).
  • Nouvel indicateur de lancement de débogageArch pour spécifier l’architecture. WinDbg Preview tente de lancer le moteur du débogueur avec le bit correct sur la cible pour mieux prendre en charge le débogage du code managé. Il existe des circonstances où il ne peut pas déterminer le bon bit ou si vous souhaiterez peut-être remplacer ce qu’il décide. Utilisez -debugArch x86|amd64 pour contrôler l’architecture du moteur de débogueur.

Autres modifications et correctifs de bogues :

  • Correction d’un bogue qui entraînait l’apparition de barres noires sur un débogueur 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 maintenant conservé lors du lancement à partir de cibles récentes.
  • Dans la fenêtre du modèle de données, vous pouvez maintenant modifier des valeurs.
  • Les traces TTD non indexées seront désormais plus claires qu’elles ne sont pas indexées.
  • Amélioration des performances de la fenêtre locale
  • Ajout d’un bouton de ruban pour enregistrer les journaux de la fenêtre de commande dans un fichier.
  • Ajouté. 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 démarrons cet itinéraire en activant 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 plan consiste à développer cette fonctionnalité pour conserver plus d’informations entre les sessions. Les points d’arrêt matériels (ba) et d’autres propriétés sur des points d’arrêt tels que les contextes spécifiques au thread et au processus, ainsi que les conditions ne sont pas actuellement enregistrées.

Modifications mineures et correctifs de bogues :

  • 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 contre-parties de commande.
  • La fenêtre de notes prend désormais en charge la mise en forme gras, soulignée 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 désassemblantes affiche désormais une mise en surbrillance légère sur 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 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ésassemblement - La fenêtre désassemblement comprend désormais :

  • Le défilement vers le haut ou vers le bas chargera en permanence plus de désassemblage dans la mesure du 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 saute la fenêtre désassemblage vers cet emplacement.
  • Le pointage sur les nombres affiche une info-bulle qui convertit ce nombre en autres bases.
  • En-têtes signifiant le début d’une fonction.

Fenêtre source plus rapide : la fenêtre source a été mise à jour pour être plus rapide et plus efficace.

Modifications mineures et correctifs de bogues :

  • Correction des problèmes liés à la mise en cache des symboles
  • Correction de certains cas où basculer l’arrêt initial n’était pas utilisable lorsque la cible n’est pas rompue dans
  • Si vous appuyez sur tabulation dans la fenêtre de commande sans rien disponible, le curseur reste maintenant dans le champ d’entrée.
  • WinDbg Preview détecte désormais automatiquement le bit 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 les symboles de chargement OCCUPÉs et il est difficile de déterminer ce qu’il fait et pourquoi sans !sym bruyant activé. Nous avons mis à jour winDbg Preview pour avoir une meilleure communication autour de ce qu’il fait lors du chargement de symboles pour vous aider à résoudre les problèmes. En plus de voir facilement ce qui se passe exactement ce qui se passe, nous avons apporté des modifications qui devraient rendre les symboles d’annulation plus fiables et la fenêtre Journaux contiendra certaines des détails qui sont normalement générés lorsque !sym bruyant est activé. Si vous appuyez sur Affichage :> les journaux d’activité vous obtiendrez la sortie de chargement de symboles bruyants complète sans avoir à l’activer et à tenter de recharger les symboles.

Fenêtre Notes expérimentales - La préversion de WinDbg dispose désormais d’une fenêtre pour prendre des notes. Appuyez simplement sur Affichage -> « Notes » pour l’ouvrir. Si vous copiez/collez-y, les liens DML sont conservés et fonctionnent toujours 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 existe encore quelques lacunes autour des menus contextuels et de la mise en surbrillance de la syntaxe, mais nous voulons donner à tout le monde la possibilité de l’essayer avant qu’il ne soit terminé de nous donner des commentaires précoces. Exécutez $UseFastSourceWindow pour l’utiliser. Si vous voulez revenir à l’ancien, exécutez $UseMonacoSourceWindow. Le paramètre conserve l’ensemble des sessions, vous devez fermer et re-code source ouvert fenêtres pour obtenir la nouvelle version.

API JSProvider version 1.2 : pour les extensions JavaScript qui déclarent la prise en charge de l’API version 1.2 :

  • Tout objet avec une méthode .compareTo qui quitte le script aura un comparateur personnalisé sur celui-ci (les opérateurs de comparaison fonctionnent dans l’évaluateur DX et ailleurs : par exemple : IModelObject ::Compare)
  • Tout objet avec une méthode .equals qui quitte le script aura un opérateur d’égalité personnalisé sur celui-ci (== et != fonctionnera dans l’évaluateur DX et ailleurs : par exemple : IModelObject ::IsEqualTo)
  • Les objets de modèle natif ou de données qui entrent dans le script auront .compareTo et .equals sur eux, ce qui permet d’accéder à n’importe quel comparateur personnalisé ou implémentations d’égalité personnalisée.

Modifications mineures et correctifs de bogues :

  • .server répertorie désormais le nom de domaine complet pour faciliter l’utilisation lorsqu’il existe des problèmes de domaine autour des noms courts.
  • Ctrl+G fonctionne désormais dans la fenêtre source.
  • Ajout de la barre d’adresse à la fenêtre désassemblage.
  • WinDbg Preview gère désormais _NT_SY Mo OL_PATH de manière plus attendue.
  • 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 toujours expérimentale et facultative. Exécutez-la 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 instances 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 sélectionnez « Mettre en surbrillance » dans le ruban de commandes ou appuyez sur Ctrl+Alt+H. L’utilisation de l’un de ces éléments sur le texte déjà mis en surbrillance supprime la mise en surbrillance.

Si vous préférez utiliser des commandes, vous pouvez utiliser la commande « $hl » :

$hl ["someValueHere"] - Mettre en surbrillance donner du texte (ou annuler la mise en surbrillance si déjà mis en surbrillance)

$hl clearAll : effacer toutes les entrées mises en surbrillance

$hl caseSensitive [1|0] - Définir la mise en surbrillance correspondant à la casse sensible à la casse ou insensible à la casse (la valeur par défaut n’est pas sensible à 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 obtenir des accès en mémoire similaires à la façon dont vous interrogez les appels aujourd’hui. Cela vous permet de 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")

Paramètres modifications - WinDbg Preview enregistre désormais automatiquement les paramètres entre les sessions, y compris le chemin de votre symbole 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 comparable ou comparable personnalisée qui fonctionnera dans dx à l’aide d’opérateurs C++ standard ou dans les 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(autre), elle est comparable (les opérateurs de comparaison fonctionnent dans dx et LINQ). Si la méthode retourne une valeur négative, telle que « cet < autre ». Si la méthode retourne zéro, « this == other ». Si la méthode retourne une valeur positive « cet > autre ». Si la méthode implémente .equals(other), elle est équatable (== fonctionne dans dx et LINQ). La méthode doit retourner true ou false.

Modifications mineures et correctifs de bogues :

  • Correction d’un bogue dans lequel la pile et les fenêtres locales ne fonctionnaient pas pendant le débogage de démarrage
  • Mise à jour de la sortie de LM pour signaler plus précisément ProductVersion et champs similaires
  • Activé le 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 locales, espions et modèles ne disparaissent pas lors du défilement vers le bas
  • Lorsque alt+tabulation revient à WinDbg Preview, la fenêtre de commande conserve correctement l’emplacement du curseur
  • Ajout du raccourci Ctrl+Alt+V pour activer le mode détaillé
  • Vous pouvez désormais désactiver le défilement automatique de la fenêtre de commande en sélectionnant et en maintenant enfoncé (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 de l’expérience du serveur de processus : nouvelle notification dans le menu Fichier pour afficher le serveur de processus auquel vous êtes connecté et avec lequel vous interagissez a été ajouté. Dans le cadre de ces modifications, lors de la fin d’une session de débogage, la connexion au serveur de processus persiste et peut être déconnecté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 : la valeur par défaut, l’une axée sur le désassemblement et un minimum.

Ruban Débogage de voyage dans le temps : il existe un ruban Voyage à temps amélioré qui s’affiche lors du débogage d’une trace de débogage de voyage temporel.

Métadonnées à partir de scripts JavaScript : les extensions JavaScript peuvent désormais retourner des métadonnées pour les propriétés et d’autres constructions. Cela signifie que l’extension peut fournir des chaînes d’aide, indiquer le rayon 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 via la présence de Symbol.metadataDescriptor ou un appel explicite à host.metadata.defineMetadata. Les retours de fonction, les valeurs itérées et d’autres contextes de valeur peuvent retourner des métadonnées pour leur valeur via host.metadata.valueWithMetadata.

Mises à jour de l’API JavaScript : certaines modifications de rupture de niveau source potentiellement ont été apportées aux API au sein du fournisseur JavaScript (y compris de nouvelles méthodes et propriétés projetées sur des objets natifs). Les extensions existantes ne voient aucune des modifications potentiellement cassantes 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 retourné par initializeScript avec une revendication 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 à l’API version 1.1 sont les suivantes :

  • host.getModuleSymbol et host.getModuleType retournent 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 .getObjectValue et .setObjectValue sur celles-ci pour accéder aux propriétés de l’objet qui peuvent entrer en conflit avec les noms des emplacements JavaScript sur l’objet (par exemple : 'address') .

Modifications JavaScript supplémentaires

  • 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’inscription d’une classe JavaScript en tant que modèle parent ou signature de type est toujours le moyen fortement préféré de manipuler le modèle 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 sur le type de bibliothèque 64 bits (par exemple : .add, .soustraction, .multiplie, .divide, etc....) sont désormais présentes sur les nombres JavaScript.
  • Les fonctions et propriétés JavaScript peuvent désormais retourner des valeurs qui sont des énumérations par le biais du marshaling personnalisé. Une fonction ou un accesseur de propriété peut retourner host.typeSystem.marshalAs(value, 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 conteneur via la propriété .containingModule.

Modifications mineures et correctifs de bogues :

  • Correction de la mise en forme des onglets du ruban conditionnel pour être moins déroutante.
  • Re-travaillé DML pour être plus strict dans l’analyse pour améliorer les performances.
  • Divers correctifs avec 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 de l’option permettant de remplacer la détection automatique du bitness cible.
  • Désactivé différents menus de fichier et 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 time Travel Tracing. Le débogage de voyage dans le temps vous permet d’enregistrer un processus, puis de le relire ultérieurement à la fois vers l’avant et vers l’arrière. Le débogage de voyage dans le temps (TTD) peut vous aider à déboguer les problèmes plus facilement en vous permettant de « rembobiner » votre session de débogueur, au lieu d’avoir à reproduire le problème jusqu’à ce que vous trouviez le bogue. Pour plus d’informations, consultez Débogage de voyage temporel - Vue d’ensemble.

1.0.12.0

Cette version était la première version de WinDbg Preview. Pour obtenir des informations générales sur les fonctionnalités disponibles dans la préversion de WinDbg, principales fonctionnalités de WinDbg.

Voir aussi

WinDbg – Installation

WinDbg - Options de démarrage en ligne de commande