Partager via


Afficher les threads et les tâches dans la fenêtre Piles parallèles (C#, Visual Basic, C++)

La fenêtre Piles parallèles est utile pour le débogage d’applications multithread. Elle contient plusieurs vues :

  • La Vue Threads affiche les informations de la pile des appels pour tous les threads de l’application. Vous pouvez naviguer entre les threads et les frames de pile sur ces threads.
  • La Vue Tâches affiche les informations de la pile des appels centrées sur les tâches.
    • Pour les applications .NET utilisant le modèle asynchrone/await, la vue Tâches est la plus utile pour le débogage. Pour obtenir un didacticiel pas à pas, consultez Déboguer une application asynchrone.
    • Pour les applications utilisant la bibliothèque parallèle de tâches (TPL), mais pas le modèle asynchrone/await, ou pour les applications C++ à l’aide du runtime d’accès concurrentiel, l’affichage Threads dans la fenêtre Stacks parallèles est l’outil le plus utile pour le débogage.
  • La Vue Tâches affiche les informations de la pile des appels centrées sur les tâches.
    • Pour les applications .NET utilisant le modèle asynchrone/await, la vue Tâches est la plus utile pour le débogage.
    • Pour les applications utilisant la bibliothèque parallèle de tâches (TPL), mais pas le modèle asynchrone/await, ou pour les applications C++ à l’aide du runtime d’accès concurrentiel, l’affichage Threads dans la fenêtre Stacks parallèles est l’outil le plus utile pour le débogage.
  • La Vue Méthode fait pivoter la pile des appels sur une méthode sélectionnée.

Utiliser la fenêtre Piles parallèles

Pour ouvrir la fenêtre Piles parallèles, vous devez être dans une session de débogage. Sélectionnez Débogage>Fenêtres>Piles parallèles.

Contrôles de barre d’outils

La fenêtre Piles parallèles comporte les contrôles de barre d’outils suivants :

Capture d’écran de la barre d’outils dans la fenêtre Piles parallèles.

Icône Contrôle Descriptif
Zone de liste modifiable Threads/Tâches Zone de liste déroulante Threads/Tâches Zone de liste déroulante Threads/Tâches Bascule entre la vue des piles d’appels de threads et la vue des piles d’appels de tâches. Pour plus d’informations, consultez la vue des tâches et la vue des fils .
Afficher uniquement l’icône d’indicateur Afficher uniquement les éléments marqués Affiche les piles d’appels uniquement pour les threads qui sont marqués dans d’autres fenêtres de débogueur, comme la fenêtre Threads GPU et la fenêtre Espion parallèle.
Icône de bascule dans la vue Méthode Basculer dans la vue Méthode Bascule entre les vues de pile des appels et la Vue Méthode. Pour plus d’informations, consultez Vue Méthode.
Défilement automatique vers l'élément actuel Défilement automatique vers le frame de pile actif Fait défiler automatiquement le graphique afin que le frame de pile actuel soit visible. Cette fonctionnalité est utile lorsque vous modifiez le frame de pile actuel d’autres fenêtres ou lorsque vous atteignez un nouveau point d’arrêt dans de grands graphiques.
icône Bascule Zoom Icône Bascule Zoom Basculer le contrôle de zoom Affiche ou masque le contrôle de zoom à gauche de la fenêtre.

Quelle que soit la visibilité du contrôle de zoom, vous pouvez également effectuer un zoom en appuyant sur Ctrl et en tournant la molette de la souris, ou en appuyant sur Ctrl+Maj++ pour effectuer un zoom avant et Ctrl+Maj+- pour un zoom arrière.

Capture d’écran de la barre d’outils dans la fenêtre Piles parallèles 2022.

Icône Contrôle Descriptif
Zone de liste modifiable Threads/Tâches Zone de liste déroulante Threads/Tâches Zone de liste déroulante Threads/Tâches Bascule entre la vue des piles d’appels de threads et la vue des piles d’appels de tâches. Pour plus d’informations, consultez la vue des tâches et la vue des fils .
icône filtre Icône de Filtre Filtre Contrôle Affiche les piles d’appels uniquement pour le groupe spécifique de threads qui vous intéresse.
Afficher uniquement l’icône d’indicateur Afficher uniquement les éléments marqués Affiche les piles d’appels uniquement pour les threads qui sont marqués dans d’autres fenêtres de débogueur, comme la fenêtre Threads GPU et la fenêtre Espion parallèle.
Icône de bascule dans la vue Méthode Basculer dans la vue Méthode Bascule entre les vues de pile des appels et la Vue Méthode. Pour plus d’informations, consultez Vue Méthode.
Défilement automatique vers l'élément actuel Défilement automatique vers le frame de pile actif Fait défiler automatiquement le graphique afin que le frame de pile actuel soit visible. Cette fonctionnalité est utile lorsque vous modifiez le frame de pile actuel d’autres fenêtres ou lorsque vous atteignez un nouveau point d’arrêt dans de grands graphiques.
icône Bascule Zoom Icône Bascule Zoom Basculer le contrôle de zoom Affiche ou masque le contrôle de zoom à gauche de la fenêtre.

Quelle que soit la visibilité du contrôle de zoom, vous pouvez également effectuer un zoom en appuyant sur Ctrl et en tournant la molette de la souris, ou en appuyant sur Ctrl+Maj++ pour effectuer un zoom avant et Ctrl+Maj+- pour un zoom arrière.
Icône de recherche Contrôle Rechercher Avec cette fonctionnalité, vous pouvez effectuer facilement une recherche dans des frames de pile, puis utiliser les flèches pour naviguer entre ces résultats.
icône enregistrer Icône Enregistrer Contrôle Enregistrer Vous permet d’enregistrer/exporter le contenu de la fenêtre Pile parallèle en tant qu’image.
Icône Code externe Contrôle Montrer le code externe En utilisant cette fonctionnalité, vous pouvez afficher/masquer les piles dans le code/les bibliothèques externes.
icône Icône Résumer Copilot Résumer les piles d’appels À compter de Visual Studio 2022 version 17.13 Preview 4, vous pouvez choisir Résumer lorsque Copilot est installé et activé. Ce bouton ouvre la fenêtre de chat Copilot, préchargée avec le contexte de discussion pertinent, ce qui vous permet d’explorer les détails, notamment les états de discussion, les appels de fonction et les solutions suggérées.

Icônes Frame de pile

Les icônes suivantes fournissent des informations sur les frames de pile actifs et actuels dans toutes les vues :

Icône Descriptif
Flèche jaune Indique l’emplacement actuel (frame de pile actif) du thread actuel.
Icône Threads Indique l’emplacement actuel (trame de pile active) d’un thread non courant.
Flèche verte Indique le frame de pile actuel (le contexte du débogueur actuel). Le nom de la méthode est en gras partout où il apparaît.
Icône Descriptif
Flèche jaune Indique l’emplacement actuel (frame de pile actif) du thread actuel.
Icône Threads Indique l’emplacement actuel (trame de pile active) d’un thread non courant.
Flèche verte Indique le frame de pile actuel (le contexte du débogueur actuel). Le nom de la méthode est en gras partout où il apparaît.
Erreur de statut (.NET) Indique que le frame de pile actuel a un avertissement d’état critique tel que Deadlock.
état État exclu (.NET) Indique le nœud bloqué.
informations d’état Informations d’état (.NET) Indique que le cadre de pile actuel contient des informations supplémentaires telles que l’attente, l’attente sur le verrou, la propriété de, etc.
État bloqué (.NET) Indique que la tâche actuelle est en état bloqué/en attente, etc.
Statut État En cours d’exécution Indique la tâche en cours d’exécution.

Éléments de menu contextuel

Les éléments de menu contextuel suivants sont disponibles lorsque vous cliquez avec le bouton droit sur une méthode dans la vue Threads ou Tâches. Les six derniers éléments sont les mêmes que dans la fenêtre Pile des appels.

Capture d’écran du menu contextuel dans la fenêtre Piles parallèles.

Élément de menu Descriptif
Marquer Marque l'élément sélectionné.
Supprimer l’indicateur Enlève le drapeau de l'élément sélectionné.
Figer Fige l'élément sélectionné.
Libérer Dégèle l’élément sélectionné.
Basculer vers le frame Identique à la commande de menu correspondante de la fenêtre Pile des appels. Toutefois, dans la fenêtre Stacks parallèles , une méthode peut se trouver dans plusieurs cadres. Vous pouvez sélectionner le frame souhaité dans le sous-menu pour cet élément. Si l'un des cadres de pile appartient au thread actuel, ce cadre est sélectionné par défaut dans le sous-menu.
Accéder à la tâche ou Accéder au fil de discussion Bascule vers la vue Tâche ou Threads et conserve le même frame de pile mis en surbrillance.
Atteindre le code source Accède à l’emplacement correspondant dans la fenêtre du code source.
Atteindre le code machine Accède à l’emplacement correspondant dans la fenêtre Désassemblage.
Afficher le code externe Affiche ou masque le code externe.
Affichage hexadécimal Bascule entre affichage décimal et hexadécimal.
Afficher les threads dans la source Signale l’emplacement du thread dans la fenêtre du code source.
Informations sur le chargement de symboles Ouvre la boîte de dialogue Informations sur le chargement des symboles.
Paramètres des symboles Ouvre la boîte de dialogue Paramètres des symboles.

Capture d’écran du Menu Raccourci dans la fenêtre Piles parallèles 2022.

Élément de menu Descriptif
Copier Copiez l’élément sélectionné.
Sélectionner tous les cadres ci-dessous Sélectionne tous les frames sous la pile sélectionnée.
Marquer Marque l'élément sélectionné.
Supprimer l’indicateur Enlève le drapeau de l'élément sélectionné.
Figer Fige l'élément sélectionné.
Libérer Dégèle l’élément sélectionné.
Basculer vers le frame Identique à la commande de menu correspondante de la fenêtre Pile des appels. Toutefois, dans la fenêtre Stacks parallèles , une méthode peut se trouver dans plusieurs cadres. Vous pouvez sélectionner le frame souhaité dans le sous-menu pour cet élément. Si l'un des cadres de pile appartient au thread actuel, ce cadre est sélectionné par défaut dans le sous-menu.
Accéder à la tâche ou Accéder au fil de discussion Bascule vers la vue Tâche ou Threads et conserve le même frame de pile mis en surbrillance.
Atteindre le code source Accède à l’emplacement correspondant dans la fenêtre du code source.
Atteindre le code machine Accède à l’emplacement correspondant dans la fenêtre Désassemblage.
Afficher le code externe Affiche ou masque le code externe.
Affichage hexadécimal Bascule entre affichage décimal et hexadécimal.
Afficher les threads dans la source Signale l’emplacement du thread dans la fenêtre du code source.
Informations sur le chargement de symboles Ouvre la boîte de dialogue Informations sur le chargement des symboles.
Paramètres des symboles Ouvre la boîte de dialogue Paramètres des symboles.

Vue Threads

Dans la vue Threads, le frame de pile et le chemin d’appel du thread actuel sont mis en surbrillance en bleu. L’emplacement actuel du thread est indiqué par la flèche jaune.

Pour modifier le frame de pile actuel, double-cliquez sur une autre méthode. Ceci peut également entraîner le basculement du thread actuel, selon que la méthode sélectionnée fait partie du thread actuel ou d’un autre thread.

Lorsque le graphique de vue Threads est trop grand pour tenir dans la fenêtre, un contrôle Vue aérienne s’affiche dans la fenêtre. Vous pouvez déplacer le frame dans le contrôle pour accéder à différentes parties du graphique.

L’illustration suivante montre le thread principal dans une transition de code managé vers natif. Cinq threads se trouvent dans la méthode actuelle. Quatre threads continuent à s’exécuter dans le contexte de la méthode S.C, tandis qu’un thread de travail continue dans une transition de code managé vers natif, en définissant le nom sur un thread de travail.

Capture d’écran de la vue Threads dans la fenêtre Piles parallèles 2022.

Le tableau suivant décrit les principales fonctionnalités de la vue Threads :

Légende Nom de l'élément Descriptif
1 Segment de pile d'appels ou nœud Contient une série de méthodes pour un ou plusieurs threads. Si le frame n’est pas relié à des flèches, il représente le chemin d’appel entier du ou des threads.
2 Surbrillance bleue Indique le chemin d’appel du thread actuel.
3 Lignes avec flèches Relient des nœuds pour créer le chemin d'appel entier du ou des threads.
4 En-tête de nœud Montre le nombre de processus/threads, le nom du thread et l’ID de thread pour le nœud.
5 Méthode Représente un ou plusieurs frames de pile dans la même méthode.
6 Info-bulle sur méthode Apparaît lorsque vous pointez sur une méthode. Dans la vue Threads, l’info-bulle montre tous les threads dans un tableau semblable à la fenêtre Threads.
7 Description du thread Description du thread générée par IA À compter de Visual Studio 2022 version 17.13 Preview 1, cette description est présente lorsque Copilot est installé et activé.

Obtenir de l’aide sur l’IA

Si vous avez Copilot, vous pouvez obtenir de l’aide sur l’IA dans la vue Threads avec des descriptions de thread générées par l’IA et à l’aide du bouton Générer des insights . Utilisez la capture d’écran Générer des insightsdu bouton Générer des insights. Pour interagir avec Copilot sur les données de thread que vous voyez. Dans ce scénario, Copilot connaît déjà le contexte de votre question. Vous n’avez donc pas besoin de fournir le contexte vous-même dans la conversation. Pour plus d’informations, consultez Déboguer avec Copilot.

Pour activer ou désactiver les descriptions de résumé des threads, ouvrez le volet Outils>Options et développez la section Tous les paramètres>GitHub>Copilot>Débogueur et diagnostics. Cochez ou désactivez la case à cocher Activer le résumé de l’IA dans la fenêtre Stacks parallèles .

Pour activer ou désactiver les descriptions de résumé des threads, ouvrez la boîte de dialogueOptions> et développez la section GitHub>Copilot. Dans la catégorie Débogueur et Diagnostics, cochez ou décochez la case Activer le résumé généré par l'IA dans la fenêtre Stacks parallèles.

L’illustration suivante montre un thread qui passe de Main à une transition du code managé vers le code natif. Six threads se trouvent dans la méthode actuelle. Deux threads continuent avec Thread.Sleep, et deux continuent avec Console.WriteLine, tandis que le thread actuel continue avec SyncTextWriter.WriteLine.

Capture d’écran de la vue des fils dans la fenêtre des piles parallèles.

Le tableau suivant décrit les principales fonctionnalités de la vue Threads :

Légende Nom de l'élément Descriptif
1 Segment de pile d'appels ou nœud Contient une série de méthodes pour un ou plusieurs threads. Si le frame n’est pas relié à des flèches, il représente le chemin d’appel entier du ou des threads.
2 Surbrillance bleue Indique le chemin d’appel du thread actuel.
3 Lignes avec flèches Relient des nœuds pour créer le chemin d'appel entier du ou des threads.
4 En-tête de nœud Affiche le nombre de processus et de threads pour le nœud.
5 Méthode Représente un ou plusieurs frames de pile dans la même méthode.
6 Info-bulle sur méthode Apparaît lorsque vous pointez sur une méthode. Dans la vue Threads, l’info-bulle montre tous les threads dans un tableau semblable à la fenêtre Threads.

Vue des Tâches

Pour les applications .NET utilisant le modèle asynchrone/await, la vue Tâches est la plus utile pour le débogage. Pour obtenir un didacticiel pas à pas, consultez Déboguer une application asynchrone.

Dans la vue Tâches , vous pouvez :

  • Affichez les visualisations de pile d’appels pour les applications qui utilisent le modèle asynchrone/await.
  • Identifiez le code asynchrone qui est planifié pour s’exécuter, mais qui n’est pas encore en cours d’exécution.

L’illustration suivante montre la vue Threads en haut et la vue Tâches correspondante en bas.

Capture d’écran des vues Threads et Tâches.

Capture d’écran de la vue des Tâches dans la fenêtre Piles parallèles.

Pointez sur une méthode pour afficher une info-bulle avec des informations supplémentaires. Dans la vue Tâches, l’info-bulle affiche toutes les tâches d’un tableau de façon similaire à la fenêtre Tâches.

L’image suivante montre l’info-bulle d’une méthode dans la vue Threads en haut et pour la vue Tâches correspondante en bas.

Capture d'écran des info-bulles Threads et Tâches.

Capture d'écran des info-bulles Threads et Tâches.

Vue Méthode

À partir de la vue Threads ou de la vue Tâches, vous pouvez faire pivoter le graphique sur la méthode actuelle en sélectionnant l’icône Basculer la vue de méthode de la barre d’outils. Vue de méthode montre en un clin d’œil toutes les méthodes dans tous les threads qui appellent la méthode actuelle ou sont appelées par elle. L'illustration suivante montre à quoi ressemblent les mêmes informations dans la vue "Threads" à gauche et dans la vue "Method" à droite.

Capture d’écran de la Vue Méthodes dans la fenêtre Piles parallèles.

Capture d’écran de la Vue Méthodes dans la fenêtre Piles parallèles 2022.

Si vous basculez vers un nouveau frame de pile, vous définissez cette méthode sur la méthode actuelle et Vue de méthode affiche tous les appelants et appelés pour la nouvelle méthode. Ce scénario peut entraîner l’apparition ou la disparition de certains threads de l'affichage, en fonction de la présence de cette méthode dans leur pile de appels. Pour revenir à l’affichage de la pile des appels, sélectionnez à nouveau l’icône de barre d’outils Vue Méthode.

Tutoriel vidéo - Déboguer des threads et des tâches avec des piles parallèles

Ces tutoriels vidéo montrent comment utiliser les vues Threads et Tâches de la fenêtre Piles parallèles dans Visual Studio 2022 pour déboguer vos applications multithreads.