Vue Threads dans le visualiseur concurrentiel
La vue Threads est la vue la plus détaillée et la plus riche en fonctionnalités du visualiseur concurrentiel. Dans la vue Threads, vous pouvez identifier les threads qui exécutent du code pendant un segment d’exécution et analyser si les threads s’exécutent ou se bloquent à cause d’une synchronisation, des E/S ou autres. La vue Threads signale également l’exécution de l’arborescence de la pile des appels des profils et les threads de déblocage.
Pendant que les threads s’exécutent, le visualiseur concurrentiel collecte des échantillons. Quand un thread arrête de s’exécuter, le visualiseur examine tous les événements de changement de contexte du système d’exploitation du thread. Des changements de contexte peuvent se produire pour les raisons suivantes :
- Un thread est bloqué sur une primitive de synchronisation.
- Le quantum d’un thread expire.
- Un thread effectue une demande d’E/S bloquante.
Le visualiseur concurrentiel classe les événements de changement de contexte et de thread, puis recherche des API reconnues bloquantes dans les piles des appels des threads. Il affiche les catégories de thread dans la légende active en bas à gauche de la vue Threads. Dans la plupart des cas, vous pouvez identifier la cause principale d’un événement de blocage en examinant les piles des appels qui correspondent aux événements de changement de contexte.
Si aucune pile d’appels ne correspond, le visualiseur concurrentiel utilise la raison d’attente fournie par Windows. Cependant, la catégorie de Windows peut être basée sur un détail de l’implémentation et ne pas refléter l’intention de l’utilisateur. Par exemple, Windows indique la raison de l’attente du blocage sur un verrou de lecteur-enregistreur natif comme étant une E/S alors qu’il s’agit d’une synchronisation.
La vue Threads affiche également les dépendances entre les threads. Par exemple, si vous identifiez un thread qui est bloqué sur un objet de synchronisation, vous pouvez trouver le thread qui l’a débloqué. Vous pouvez examiner la pile des appels du thread de déblocage au moment où il a débloqué l’autre thread.
Vous pouvez utiliser la vue Threads pour :
- Identifier les raisons pour lesquelles l’interface utilisateur d’une application ne répond pas pendant certaines phases de l’exécution.
- Déterminer la quantité de temps passée dans des blocages liés à la synchronisation, à des E/S, à des erreurs de page et à d’autres événements.
- Découvrir le niveau d’interférence provenant d’autres processus qui s’exécutent sur le système.
- Identifier les problèmes d’équilibrage de charge pour l’exécution parallèle.
- Rechercher les raisons d’une scalabilité non optimale ou inexistante. Par exemple, pourquoi les performances d’une application parallèle ne s’améliorent pas alors que d’autres cœurs logiques sont disponibles.
- Comprendre le degré de concurrence dans l’application, pour optimiser la parallélisation.
- Identifier les dépendances entre les threads worker et les chemins critiques de l’exécution.
Utiliser la vue Threads
Pour démarrer le visualiseur concurrentiel, sélectionnez Analyser>Visualiseur concurrentiel, puis sélectionnez une option comme Lancer un nouveau processus.
Le visualiseur concurrentiel démarre l’application et collecte une trace jusqu’à ce que vous sélectionniez Arrêter la collecte. Le visualiseur analyse ensuite la trace et affiche les résultats dans la page de rapport de la trace.
Sélectionnez l’onglet Threads en haut à gauche du rapport pour ouvrir la vue Threads.
Sélectionnez les intervalles de temps et les threads pour démarrer une analyse des performances.
Analyse de la chronologie
La partie supérieure de la vue Threads est une chronologie. La chronologie montre l’activité de tous les threads du processus et de toutes les unités de disque physique de l’ordinateur hôte. Il affiche également l’activité GPU et les événements de marqueur.
Dans la chronologie, l’axe des X représente le temps et l’axe Y représente plusieurs canaux :
- Deux canaux d’E/S pour chaque lecteur de disque sur le système, un canal pour les lectures et un pour les écritures.
- Un canal pour chaque thread du processus.
- Des canaux de marqueurs, s’il existe des événements de marqueur dans la trace. Les canaux de marqueurs apparaissent initialement sous les canaux de threads qui ont généré ces événements.
- Canaux GPU
Initialement, les threads sont triés dans l’ordre où ils sont créés : le thread d’application principal figure donc en premier. Sélectionnez une autre option dans le menu déroulant Trier par pour trier les threads par un autre critère comme Exécution.
Les couleurs de la chronologie indiquent l’état d’un thread à un moment donné. Les segments verts indiquent qu’il est en cours d’exécution, les rouges qu’il est bloqué pour la synchronisation, les jaunes qu’il est préempté et les violets qu’il est engagé dans les E/S d’un appareil.
Vous pouvez effectuer un zoom avant pour voir plus de détails, ou un zoom arrière pour voir un intervalle de temps plus long. Sélectionnez des segments et des points sur le graphe pour obtenir des détails sur les catégories, les heures de début, les retards et les états de la pile des appels.
Utilisez la chronologie pour examiner la répartition du travail entre les threads impliqués dans une boucle parallèle ou dans des tâches concurrentes. Si l’exécution d’un thread est plus longue que celle des autres, le travail est peut-être déséquilibré. Vous pouvez améliorer les performances de votre application en distribuant le travail de façon plus uniforme entre les threads.
Si un seul thread est en cours d’exécution à un point dans le temps, l’application risque de ne pas tirer pleinement parti de la concurrence sur le système. Vous pouvez utiliser le graphe chronologique pour examiner les dépendances entre les threads, et les relations chronologiques entre les threads de blocage et les threads bloqués. Pour réorganiser les threads, sélectionnez un thread et l’icône Monter ou Descendre dans la barre d’outils.
Vous pouvez masquer les threads qui ne font aucun travail ou qui sont complètement bloqués, car leurs statistiques ne sont pas pertinentes et peuvent polluer les rapports. Masquez les threads en sélectionnant leur nom, puis en sélectionnant les icônes Masquer les threads sélectionnés ou Masquer tous les threads sauf ceux sélectionnés dans la barre d’outils. Pour identifier les threads à masquer, sélectionnez le lien Synthèse par thread en bas à gauche. Vous pouvez masquer les threads qui ne présentent aucune activité dans le graphe Synthèse par thread.
Détails de l’exécution d’un thread
Pour obtenir des informations plus détaillées sur un segment d’exécution, sélectionnez un point sur un segment vert de la chronologie. Le visualiseur concurrentiel affiche un signe d’insertion noir au-dessus du point sélectionné et montre sa pile des appels sous l’onglet Actuel du volet inférieur. Vous pouvez sélectionner plusieurs points sur le segment d’exécution.
Notes
Le visualiseur concurrentiel risque de ne pas pouvoir résoudre une sélection sur un segment d’exécution si la durée du segment est inférieure à une milliseconde.
Pour obtenir un profil d’exécution pour tous les threads non masqués dans la période de temps sélectionnée, sélectionnez Exécution dans la légende en bas à gauche.
Détails du blocage d’un thread
Pour obtenir des informations sur une région particulière sur un thread, placez le pointeur sur cette région dans la chronologie pour afficher une info-bulle. L’info-bulle contient des informations comme la catégorie, l’heure de début et le retard. Sélectionnez la région pour afficher la pile des appels à ce point précis dans le temps sous l’onglet Actuel du volet inférieur. Le volet affiche également la catégorie, le retard, ainsi que l’API de blocage et le thread de déblocage le cas échéant. En examinant la pile des appels, vous pouvez déterminer les raisons sous-jacentes des événements de blocage du thread.
Un chemin d’exécution peut avoir plusieurs événements de blocage. Pour les examiner par catégorie de blocage et trouver plus rapidement les zones à problème, sélectionnez une catégorie de blocage dans la légende à gauche.
Dépendances entre threads
Le visualiseur concurrentiel affiche les dépendances entre les threads, ce qui vous permet de déterminer ce qu’un thread bloqué tentait de faire et ce que d’autres threads lui ont permis d’exécuter.
Pour déterminer quel thread a débloqué un autre thread, sélectionnez le segment de blocage dans la chronologie. Si le visualiseur concurrentiel peut déterminer le thread de déblocage, il trace une ligne entre le thread de déblocage et le segment d’exécution qui suit le segment de blocage. Sélectionnez l’onglet Pile de déblocage dans le volet inférieur pour voir la pile des appels appropriée.
Rapports des profils
Sous le graphe de la chronologie se trouve un volet avec les onglets de rapport Rapport des profils, Actuel et Pile de déblocage. Les rapports se mettent à jour automatiquement quand vous changez la chronologie et les sélections de threads. Pour les grandes traces, le volet des rapports risque de ne pas être disponible pendant le calcul des mises à jour.
Onglet Rapport des profils
Le Rapport des profils présente deux filtres :
- Pour filtrer les entrées de l’arborescence des appels où peu de temps a été passé, tapez une valeur de filtre entre 0 et 99 pour cent dans le champ Réduction du bruit à. La valeur par défaut est 2 pour cent.
- Pour voir les arborescences des appels seulement pour votre code, cochez la case Uniquement mon code. Pour voir toutes les arborescences des appels, décochez-la.
L’onglet Rapport des profils montre les rapports des catégories et des liens de la légende. Pour afficher un rapport, sélectionnez une des entrées sur la gauche :
Exécution Le rapport Exécution montre la répartition du temps d’exécution de l’application.
Pour rechercher la ligne de code où le temps d’exécution est passé, développez l’arborescence des appels et, dans le menu contextuel pour l’entrée de l’arborescence des appels, sélectionnez Afficher la source ou Afficher les sites d’appel. Afficher la source localise la ligne de code exécutée. Afficher les sites d’appel localise la ligne de code qui a appelé la ligne exécutée. S’il n’existe qu’une seule ligne de site d’appel, son code est mis en surbrillance. Si plusieurs sites d’appels existent, sélectionnez celui de votre choix dans la boîte de dialogue, puis sélectionnez Atteindre la source. Il est souvent utile de localiser le site d’appel ayant le plus grand nombre d’instances, la durée la plus longue ou les deux. Pour plus d’informations, consultez Rapport de profil d’exécution.
Synchronisation Le rapport Synchronisation montre les appels responsables des blocages de synchronisation ainsi que les durées totales de blocage pour chaque pile des appels. Pour plus d’informations, consultez Durée de synchronisation.
E/S Le rapport E/S montre les appels responsables des blocages d’E/S ainsi que les durées totales de blocage pour chaque pile des appels. Pour plus d’informations, consultez Temps d’E/S (vue Threads).
Veille Le rapport Veille montre les appels responsables des blocages de veille ainsi que les durées totales de blocage pour chaque pile des appels. Pour plus d’informations, consultez Durée de veille.
Gestion de la mémoire Le rapport Gestion de la mémoire montre les appels où les blocages de gestion de la mémoire se sont produits ainsi que les durées totales de blocage pour chaque pile des appels. Utilisez ces informations pour identifier les zones qui ont des problèmes de pagination ou de garbage collection excessifs. Pour plus d’informations, consultez Période de gestion de la mémoire.
Anticipation Le rapport Anticipation montre où les processus sur le système ont anticipé le processus en cours. Il montre également les threads individuels qui ont remplacé les threads du processus en cours. Vous pouvez utiliser ces informations pour identifier les processus et les threads qui ont effectué le plus de préemptions. Pour plus d’informations, consultez Durée de préemption.
Traitement de l’interface utilisateur Le rapport Traitement de l’interface utilisateur montre les appels responsables des blocages de traitement de l’IU ainsi que les durées totales de blocage pour chaque pile des appels. Pour plus d’informations, consultez Temps de traitement UI.
Synthèse par thread Sélectionnez Synthèse par thread pour afficher un graphe indiquant l’état des threads pendant l’intervalle de temps sélectionné. Les colonnes avec des codes de couleur montrent la durée totale que chaque thread a passée dans les états En cours d’exécution, Bloqué, E/S et autres. Les threads sont nommés en bas. Quand vous ajustez le niveau de zoom dans le graphe chronologique, celui-ci se met automatiquement à jour.
À certains niveaux de zoom, certains threads risquent de ne pas apparaître dans le graphe. Si cela se produit, des points de suspension (...) s’affichent à droite. Si le thread que vous voulez n’apparaît pas, vous pouvez masquer d’autres threads. Pour plus d’informations, consultez Rapport Récapitulatif par thread.
Opérations sur le disque Sélectionnez Opérations sur le disque pour afficher les processus et les threads impliqués dans les E/S disque du processus en cours, les fichiers qu’ils ont utilisés (par exemple les DLL qu’ils ont chargées), le nombre d’octets lus et d’autres informations. Vous pouvez utiliser ce rapport pour évaluer le temps passé à accéder aux fichiers pendant l’exécution, en particulier quand votre processus est lié à des E/S. Pour plus d’informations, consultez Rapport Opérations sur le disque.
Onglet actuel
Cet onglet affiche la pile des appels pour un point sélectionné sur un segment de thread dans le graphique chronologique. Les piles des appels sont coupées de façon à afficher seulement les activités liées à votre application.
Onglet Pile de déblocage
Cet onglet affiche le thread qui a débloqué le thread sélectionné et la pile des appels de déblocage.
Canaux (vue Threads)
Le visualiseur concurrentiel montre quatre types de canaux : les canaux de threads, les canaux de disques, les canaux de marqueurs et les canaux GPU.
Canaux de threads
Un canal de thread affiche l’état d’un seul thread, à l’aide d’un système de couleurs. Lorsque vous pointez sur le nom du canal, la fonction de démarrage du thread en question s’affiche. Le visualiseur concurrentiel détecte plusieurs types de threads. Les types les plus courants sont présentés dans le tableau suivant.
Thread | Description |
---|---|
Thread principal | Thread qui a démarré l’application. |
Thread de travail | Thread qui a été créé par le thread principal de l’application. |
Thread de travail CLR | Thread de travail qui a été créé par le common language runtime (CLR). |
Assistance du débogueur | Thread de travail qui a été créé par le débogueur Visual Studio. |
Thread ConcRT | Thread qui a été créé par le runtime d’accès concurrentiel Microsoft. |
Thread GDI | Thread qui a été créé par GDIPlus. |
Thread OLE/RPC | Thread qui a été créé en tant que thread de travail RPC. |
Thread RPC | Thread qui a été créé en tant que thread RPC. |
Thread Winsock | Thread qui a été créé en tant que thread Winsock. |
Pool de threads | Thread qui a été créé par le pool de threads CLR. |
Canaux de disques
Les canaux de disques correspondent aux lecteurs physiques de l’ordinateur. Chaque lecteur physique du système dispose de canaux distincts pour les opérations de lecture et d’écriture. Chaque lecteur dispose donc de deux canaux. Les numéros des disques correspondent aux noms des dispositifs de noyau. Un canal de disque s’affiche uniquement si le disque a connu une activité.
Canaux de marqueurs
Les canaux de marqueurs correspondent aux événements générés par l’application et les bibliothèques qu’elle utilise. Par exemple, la bibliothèque parallèle de tâches, la bibliothèque de modèles parallèles et C++ AMP génèrent des événements qui s’affichent en tant que marqueurs. Chaque canal de marqueur est associé à un ID de thread, qui s’affiche à côté de la description du canal. L’ID identifie le thread qui a généré l’événement. La description du canal comprend le nom du fournisseur de suivi d’événements pour Windows (ETW) qui a généré les événements. Si le canal affiche les événements du kit SDK du visualiseur concurrentiel, le nom de la série s’affiche également.
Canaux GPU
Les canaux GPU affichent des informations concernant l’activité DirectX 11 sur le système. Chaque moteur DirectX qui est associé à la carte graphique dispose d’un canal distinct. Chaque segment correspond à la durée de traitement d’un paquet DMA.
Copier la sélection
Pour copier l’intégralité de la pile des appels à partir de l’onglet Rapport, cliquez sur Copier. Vous pouvez ensuite coller la pile des appels dans n’importe quel programme prenant en charge cette action.
Onglet actuel
En cliquant sur l’onglet Actuel, vous pouvez voir la pile des appels (si disponible) qui est la plus proche du point de sélection actuel dans la chronologie si un segment de thread de processeur est sélectionné. Dans ce cas, le point de sélection est représenté par une flèche noire, ou point d’insertion, au-dessus de la chronologie. Lorsqu’un segment de blocage est sélectionné, le point d’insertion n’est pas affiché, car il n’y a pas d’exécution. Toutefois, le segment est encore sélectionné et une pile des appels est affichée.
L’onglet Actuel affiche également des informations sur les segments d’activité DirectX, les marqueurs et les accès d’E/S. Pour les segments d’activité DirectX, des informations sur la façon dont les paquets DMA sont traités par la file d’attente matérielle sont affichées. Pour les marqueurs, une description et des informations de type sont affichées. Pour les accès d’E/S, des informations sur le fichier et le nombre d’octets lus ou écrits sont affichées.
Segment de chronologie vide
Dans le visualiseur concurrentiel, la raison d’un segment de chronologie vide (avec un arrière-plan blanc) dépend du type de canal.
Pour un canal de thread d’UC, cela signifie que le thread n’existait pas à cette période. Pour en savoir plus sur le thread, regardez sa section d’exécution en utilisant le contrôle de zoom ou en faisant défiler la page horizontalement.
Pour un canal d’E/S, cela signifie qu’aucun accès disque ne s’est produit pour le compte du processus cible à ce moment précis.
Pour un canal DirectX, cela signifie qu’aucun travail GPU n’a été effectué pour le compte du processus cible pendant cette période.
Pour un canal de marqueur, cela signifie qu’aucun marqueur n’a été généré.
Exporter, bouton (visualiseur concurrentiel)
Le bouton Exporter vous permet d’exporter la pile des appels dans un fichier .csv pour vos propres besoins, ou pour l’utiliser avec un autre outil, par exemple Microsoft Excel.
Uniquement mon code (vue Threads)
Si vous sélectionnez cette option, vous filtrez la pile des appels pour afficher uniquement votre code, plus un niveau des fonctions appelées.
En activant cette option, vous pouvez réduire considérablement la complexité de la pile des appels et éventuellement faciliter le diagnostic d’un problème particulier.
Dans certains cas, cette option peut éliminer l’appel bloquant. Si vous avez besoin des détails de la pile des appels complète pour déterminer cet appel, désactivez cette option de façon à afficher la totalité de la pile des appels.
Gérer les canaux
Dans la vue Threads du visualiseur concurrentiel, vous pouvez organiser les canaux pour votre processus afin de pouvoir examiner des modèles particuliers. Vous pouvez trier les canaux, les déplacer vers le haut et vers le bas, ainsi que les masquer ou les afficher.
Trier par
Vous pouvez utiliser le contrôle Trier par pour trier les threads selon différents critères, en fonction du niveau de zoom actuel. Cette fonction est particulièrement utile quand vous recherchez un modèle particulier. Vous pouvez effectuer le tri selon les critères suivants :
Critères | Définition |
---|---|
Heure de Début | Trie les threads sur leur heure de début. Il s’agit de l’ordre de tri par défaut. |
Heure de fin | Trie les threads sur leur heure de fin. |
Exécution | Trie les threads sur le pourcentage de temps consacré à l’exécution. |
Synchronization | Trie les threads sur le pourcentage de temps consacré à la synchronisation. |
E/S | Trie les threads sur le pourcentage de temps consacré aux E/S (lecture et écriture de données). |
Veille | Trie les threads sur le pourcentage de temps passé en veille. |
Pagination | Trie les threads sur le pourcentage de temps consacré à la pagination. |
Anticipation | Trie les threads sur le pourcentage de temps consacré à l’anticipation. |
Traitement de l'interface utilisateur | Trie les threads sur le pourcentage de temps consacré au traitement de l’interface utilisateur. |
Déplacer le canal sélectionné vers le haut ou vers le bas
Vous pouvez utiliser ces contrôles pour déplacer un canal vers le haut ou vers le bas dans la liste. Par exemple, vous pourrez placer les canaux associés côte à côte pour faciliter l’examen d’un modèle particulier ou d’une relation inter-threads.
Déplacer le canal sélectionné en haut ou en bas
Vous pouvez déplacer des canaux sélectionnés en haut ou en bas de la liste pour pouvoir examiner un modèle particulier, ou faire disparaître certains canaux quand vous en examinez d’autres.
Masquer les canaux sélectionnés
Choisissez ce contrôle pour masquer des canaux. Par exemple, si un thread est à 100 % de synchronisation pendant toute la durée de votre processus managé, vous pouvez le masquer pendant que vous analysez d’autres threads.
Notes
Masquer un thread le supprime également du temps de calcul, qui est affiché dans la légende active et dans les rapports de profils.
Afficher tous les canaux
Ce contrôle est actif quand un ou plusieurs canaux sont masqués. Si vous cliquez dessus, tous les éléments masqués sont affichés et réintégrés dans les calculs de temps.
Déplacer les marqueurs en haut
Si une trace contient des événements de marqueur, vous pouvez utiliser cette commande pour déplacer les canaux de marqueurs en haut de la chronologie. Leur ordre relatif est conservé.
Regrouper les marqueurs par thread
Si une trace contient des événements de marqueur, vous pouvez utiliser cette commande pour regrouper des canaux de marqueurs sous le thread qui a généré les événements de marqueur. Les canaux de disques sont déplacés en haut de la liste de canaux, et les canaux GPU sont déplacés en bas.
Mode Mesure activé/désactivé
Avec cet outil, vous pouvez mesurer précisément une durée dans la chronologie. Pour activer le mode Mesure, cliquez sur le bouton Mesure (qui a une icône de règle), puis faites-le glisser dans la chronologie. Notez que, pendant cette opération, la zone en dessous du pointeur est mise en surbrillance en jaune et que la durée mesurée apparaît dans la barre d’outils à droite du bouton. Cette valeur est calculée dynamiquement au fil du glissement, ce qui vous permet de voir immédiatement la durée d’un événement particulier. Quand vous relâchez le bouton de la souris, la valeur de la durée reste visible.
Vous pouvez répéter le processus de mesure, mais seule la mesure la plus récente est affichée. Cliquez à nouveau sur le bouton Mesure pour désactiver le mode Mesure.
Pourcentage de réduction du bruit
Par défaut, la valeur du paramètre Pourcentage de réduction du bruit est 2. Seules les entrées qui ont un pourcentage de temps inclusif supérieur ou égal à cette valeur sont affichées dans l’arborescence des appels. En changeant la valeur, vous pouvez contrôler le nombre d’entrées qui sont affichées dans l’arborescence des appels. Par exemple, changer la valeur en 10 affichera seulement les entrées de l’arborescence des appels qui ont un temps inclusif supérieur ou égal à 10 %. En augmentant la valeur du paramètre, vous pouvez vous concentrer sur les entrées qui influent le plus sur les performances de votre processus.
Rapport basé sur une plage horaire visible
La vue Profil affiche des rapports basés sur l’intervalle de temps et les canaux actuellement visibles. Pour plus de détails sur les différents sous-ensembles de données, cliquez sur les éléments dans la légende.
Vous pouvez trouver plus d’informations sur les données dans les rapports Vue Threads.
Connecteur de thread
Quand vous cliquez sur un segment de blocage pour afficher une pile des appels et sa pile de déblocage, le connecteur de thread peut également apparaître. Si l’événement de déblocage s’est produit sur un autre thread du processus actif, le connecteur de thread identifie visuellement le thread et le segment d’exécution qui a permis au thread bloqué de reprendre l’exécution.
Signe insertion de chronologie
Quand vous sélectionnez un point sur la chronologie d’un segment de thread en exécution, un signe insertion de chronologie apparaît au-dessus de celui-ci. La pile des appels qui s’affiche sur l’onglet de la pile active est celle qui est la plus proche dans le temps de l’endroit où vous avez cliqué sur le segment. Le signe d’insertion est utilisé pour associer la pile des appels qui est affichée sous l’onglet Actuel au moment où elle a été échantillonnée. Le signe d’insertion indique l’emplacement exact de la pile des appels, qui est la pile des appels la plus proche de l’emplacement sélectionné par l’utilisateur.
Pile de déblocage
Si l’élément de thread actuellement sélectionné représente un segment bloqué qui ultérieurement a commencé à exécuter après que qu’il a été débloqué par un autre thread dans le processus actuel, la pile des appels pour le thread qui a effectué le déblocage est indiqué sous cet onglet.
Profil de chronologie visible
Le profil de chronologie visible pour la vue du blocage des threads fournit des informations statistiques et des liens vers des rapports. Quand vous effectuez un zoom avant ou arrière, que vous faites défiler horizontalement ou bien que vous affichez ou masquez les canaux, les nombres dans la légende active changent pour refléter le contenu actuel de la vue. Pour afficher un rapport sur un élément dans la légende, cliquez sur cet élément.
Contrôle Zoom (vue Threads)
Le contrôle de zoom est un curseur qui vous permet d’effectuer un zoom avant et arrière sur la chronologie afin que vous puissiez vous concentrer sur les zones dignes d’intérêt. Étant donné que ce contrôle effectue un zoom avant sur le centre de l’affichage de la chronologie, centrez la zone digne d’intérêt avant d’effectuer un zoom avant.
Zoom avant en faisant glisser l’affichage de la chronologie
Effectuer un zoom avant en faisant glisser l’affichage de la chronologie crée une zone qui est mise en surbrillance en jaune. Quand vous relâchez le bouton de la souris, l’affichage de la chronologie effectue un zoom avant sur la plage sélectionnée.
Zoom avant et arrière à l’aide de la roulette de la souris
Cliquez sur n’importe quel point de la chronologie (pour vous assurer qu’elle a le focus de la souris), puis appuyez sur Ctrl et faites tourner la roulette de la souris (vers l’avant pour un zoom avant ou vers l’arrière pour un zoom arrière).