Utilisation de la fenêtre Piles parallèles
La fenêtre Piles parallèles est utile pour le débogage d'applications multithread.Sa Vue Threads affiche les informations de pile d'appels de tous les threads de votre application.Elle vous permet de naviguer entre les threads et les frames de pile sur ces threads.En code managé, la Vue Tâches affiche les piles d'appels d'objets System.Threading.Tasks.Task.En code natif, la Vue Tâches affiche les piles d'appels de groupes de tâches, d'algorithmes parallèles, d'agents asynchrones et de tâches légères.
Vue Threads
L'illustration suivante présente un thread qui est allé de Main vers A puis B et ensuite vers du code externe.Deux autres threads sont partis de code externe et sont allés vers A, mais l'un des deux a continué vers B, puis vers du code externe, tandis que l'autre a continué vers C, puis vers une AnonymousMethod.
Dans l'illustration, le chemin d'appel du thread actuel est mis en surbrillance en bleu et le frame de pile actif est signalé par la flèche jaune.Vous pouvez modifier le frame de pile actuel en sélectionnant une autre méthode dans la fenêtre Piles parallèles.Ceci peut également entraîner le basculement du thread actuel, selon que la méthode sélectionnée fait déjà partie du thread actuel ou d'un autre thread.Le tableau suivant décrit les principales fonctionnalités de la fenêtre Piles parallèles, comme indiqué dans l'illustration.
Lettre de référence |
Nom de l'élément |
Description |
---|---|---|
A |
Nœud ou segment de pile des appels |
Contient une série de contextes de méthode pour un ou plusieurs threads.Si le nœud n'est pas relié à des flèches, il représente le chemin d'appel entier du ou des threads. |
B |
Surbrillance bleue |
Indique le chemin d'appel du thread actuel. |
C |
Flèches |
Relient des nœuds pour créer le chemin d'appel entier du ou des threads. |
D |
Info-bulle sur l'en-tête de nœud |
Indique l'ID et le nom défini par l'utilisateur de chaque thread dont le chemin d'appel partage ce nœud. |
E |
Contexte de méthode |
Représente un ou plusieurs frames de pile dans la même méthode. |
F |
Info-bulle sur le contexte de méthode |
Dans la vue Threads, elle affiche tous les threads dans une table semblable à la fenêtre de Threads .Dans la vue de tâche, elle présente toutes les tâches dans un tableau semblable à la fenêtre de Tâches parallèles . |
De plus, la fenêtre Piles parallèles affiche une icône Vue aérienne dans le volet principal lorsque le graphique est trop grand pour être contenu dans la fenêtre.Vous pouvez cliquer sur l'icône pour afficher le graphique entier dans la fenêtre.
Icônes du contexte de méthode
Le tableau suivant décrit les icônes qui fournissent des informations sur les frames de pile actifs et actuels :
Icône |
Description |
Indique que le contexte de méthode contient le frame de pile actif du thread actuel. |
|
Indique que le contexte de méthode contient le frame de pile actif d'un thread non actuel. |
|
Indique que le contexte de méthode contient le frame de pile actuel.Ce nom de méthode apparaît en gras dans tous les nœuds dans lesquels il s'affiche. |
Contrôles de barre d'outils
L'illustration et le tableau suivants décrivent les contrôles disponibles dans la barre d'outils Piles parallèles.
Lettre de référence |
Contrôle |
Description |
---|---|---|
A |
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 Vue Tâches et Vue Threads. |
B |
Afficher uniquement avec indicateur |
Affiche les piles d'appels uniquement pour les threads signalés dans d'autres fenêtres de débogage, telles que la fenêtre de Threads GPU et la fenêtre de montre parallèle . |
C |
Basculer dans la vue Méthode |
Bascule entre la vue Pile et la vue Méthode.Pour plus d'informations, consultez Vue Méthode. |
D |
Défilement automatique vers le frame de pile actif |
Fait défiler automatiquement le diagramme 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 diagrammes. |
E |
Basculer le contrôle de zoom |
Affiche ou masque le contrôle de zoom.Vous pouvez également effectuer un zoom en appuyant sur CTRL et en tournant la roulette de la souris, indépendamment de la visibilité du contrôle de zoom. |
Éléments de menu contextuel
L'illustration et le tableau suivants décrivent les éléments de menu contextuel disponibles lorsque vous cliquez avec le bouton droit sur un contexte de méthode dans la vue Threads ou la vue Tâches.Les six derniers éléments sont empruntés directement à la fenêtre Pile des appels et ne présentent aucun nouveau comportement.
Menu Item |
Description |
---|---|
Indicateur |
Signale l'élément sélectionné. |
Indicateur |
Unflags l'élément sélectionné. |
Gel |
Gèle l'élément sélectionné. |
Libérer |
Libère l'élément sélectionné. |
Atteindre la tâche (thread) |
Exécute la même fonction que la zone de liste déroulante de la barre d'outils, mais conserve le même frame de pile en surbrillance. |
Atteindre le code source |
Accède à l'emplacement du code source qui correspond au frame de pile sur lequel l'utilisateur a cliqué avec le bouton droit. |
Basculer vers le frame |
Identique à la commande de menu correspondante de la fenêtre Pile des appels.Toutefois, avec les piles parallèles, plusieurs frames peuvent correspondre à un seul contexte de méthode.Par conséquent, l'élément de menu comporte des sous-menus, qui représentent chacun un frame de pile spécifique.Si l'un des frames de pile se trouve sur le thread actuel, le menu qui correspond à ce frame de pile est sélectionné. |
Atteindre le code machine |
Accède à l'emplacement de la fenêtre Code Machine qui correspond au frame de pile sur lequel l'utilisateur a cliqué avec le bouton droit. |
Afficher le code externe |
Affiche ou masque le code externe. |
Affichage hexadécimal |
Bascule entre affichage décimal et hexadécimal. |
Informations sur le chargement de symboles |
Affiche la boîte de dialogue correspondante. |
Paramètres des symboles |
Affiche la boîte de dialogue correspondante. |
Vue Tâches
Si votre application utilise des objets System.Threading.Tasks.Task (code managé) ou des objets task_handle (code natif) pour exprimer le parallélisme, vous pouvez utiliser la zone de liste déroulante de la barre d'outils de la fenêtre Piles parallèles pour basculer en vue Tâches.La vue Tâches contient les piles d'appels des tâches et non celles des threads.Les différences entre la vue Tâches et la vue Threads sont les suivantes :
Les piles d'appels des threads qui n'exécutent pas de tâches n'apparaissent pas.
Les piles d'appels des threads qui exécutent des tâches sont tronquées visuellement en haut et en bas afin d'afficher les frames les plus pertinents appartenant aux tâches.
Lorsque plusieurs tâches figurent sur un thread, les piles d'appels de ces tâches sont fractionnées dans des nœuds séparés.
L'illustration suivante présente la vue Tâches de la fenêtre Piles parallèles à droite et la vue Threads correspondante à gauche.
Pour afficher l'ensemble de la pile des appels, passez simplement en vue Threads en cliquant avec le bouton droit sur un frame de pile, puis en cliquant sur Atteindre le thread.
Comme indiqué dans le tableau précédent, en pointant sur un contexte de méthode, vous pouvez afficher des informations supplémentaires.L'image suivante présente les informations de l'info-bulle pour la vue Threads et la vue 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 cliquant sur l'icône Vue Méthode de la barre d'outils.La vue Méthode présente toutes les méthodes de tous les threads qui appellent ou sont appelés par la méthode actuelle.L'illustration suivante présente une vue Threads, ainsi que la façon dont les mêmes informations s'affichent dans la vue Méthode.
En passant à un nouveau frame de pile, vous faites de cette méthode la méthode actuelle et affichez dans la fenêtre tous les appelants et appelés de cette méthode.Des threads peuvent alors apparaître ou disparaître de la vue, selon que cette méthode s'affiche ou non sur leurs piles des appels.Pour repasser en vue Pile, cliquez à nouveau sur le bouton de barre d'outils Vue Méthode.
Voir aussi
Tâches
Procédure pas à pas : débogage d'une application parallèle
Procédure pas à pas : débogage d'une application parallèle
Référence
Concepts
Utilisation de la fenêtre Tâches parallèles