Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 :
| Icône | Contrôle | Descriptif |
|---|---|---|
Zone de liste modifiable 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 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. |
|
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 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 ![]() |
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 | Contrôle | Descriptif |
|---|---|---|
Zone de liste modifiable 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 ![]() |
Filtre Contrôle | Affiche les piles d’appels uniquement pour le groupe spécifique de threads qui vous intéresse. |
|
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. |
|
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 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 ![]() |
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. |
|
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 ![]() |
Contrôle Enregistrer | Vous permet d’enregistrer/exporter le contenu de la fenêtre Pile parallèle en tant qu’image. |
|
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 ![]() |
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 |
|---|---|
|
|
Indique l’emplacement actuel (frame de pile actif) du thread actuel. |
|
|
Indique l’emplacement actuel (trame de pile active) d’un thread non courant. |
|
|
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 |
|---|---|
|
|
Indique l’emplacement actuel (frame de pile actif) du thread actuel. |
|
|
Indique l’emplacement actuel (trame de pile active) d’un thread non courant. |
|
|
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 |
(.NET) Indique le nœud bloqué. |
| 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. |
|
|
(.NET) Indique que la tâche actuelle est en état bloqué/en attente, etc. |
| Statut |
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.
| É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. |
| É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.
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 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.
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.
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.
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.
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.
- Déboguer des tâches avec la fenêtre Piles parallèles
- Déboguer des threads avec la fenêtre Piles parallèles






