Afficher les Threads dans le débogueur dans Visual Studio à l’aide de la fenêtre ThreadsView Threads in the debugger in Visual Studio using the Threads window

Dans le Threads fenêtre, vous pouvez examiner et utiliser les threads de l’application que vous déboguez.In the Threads window, you can examine and work with threads in the application that you are debugging. Pour obtenir des instructions sur la façon d’utiliser le Threads fenêtre, consultez procédure pas à pas : déboguer à l’aide de la fenêtre Threads.For step-by-step guidance on how to use the Threads window, see Walkthrough: Debug using the Threads Window.

Le Threads fenêtre contient un tableau où chaque ligne représente un thread dans votre application.The Threads window contains a table where each row represents a thread in your application. Par défaut, ce tableau répertorie tous les threads de votre application, mais vous pouvez filtrer la liste de façon à afficher uniquement les threads qui vous intéressent.By default, the table lists all threads in your application, but you can filter the list to show only the threads that interest you. Chaque colonne contient un type d'informations différent.Each column contains a different type of information. Vous pouvez également masquer certaines colonnes.You can also hide some columns. Si vous affichez toutes les colonnes, les informations suivantes s'affichent, de gauche à droite :If you display all columns, the following information appears, from left to right:

  • La colonne d'indicateur, où vous pouvez marquer un thread auquel vous souhaitez apporter une attention spéciale.The flag column, where you can mark a thread to which you want to pay special attention. Pour plus d’informations sur la façon de signaler un thread, consultez Comment : indicateur et les Threads sans indicateur.For information about how to flag a thread, see How to: Flag and Unflag Threads.

  • Colonne de thread active, dans lequel une flèche jaune indique que le thread actuel (un contour de flèche indique le contexte actuel du débogueur pour un thread non actuel).The current thread column, in which a yellow arrow indicates the current thread (an arrow outline indicates the current debugger context for a non-current thread).

  • Le ID colonne qui contient le numéro d’identification pour chaque thread.The ID column, which contains the identification number for each thread.

  • Le ID managé colonne qui contient les numéros d’identification managés des threads managés.The Managed ID column, which contains the managed identification numbers for managed threads.

  • Le catégorie colonne, qui classe les threads en tant que threads d’interface utilisateur, gestionnaires d’appel de procédure distante ou threads de travail.The Category column, which categorizes threads as user interface threads, remote procedure call handlers, or worker threads. Une catégorie spéciale identifie le thread principal de l'application.A special category identifies the main thread of the application.

  • Le nom colonne qui identifie chaque thread par son nom, le cas échéant, ou en tant que <sans nom >.The Name column, which identify each thread by name, if it has one, or as <No Name>.

  • Le emplacement colonne, qui indique où le thread est en cours d’exécution.The Location column, which shows where the thread is running. Vous pouvez développer cet emplacement de façon à afficher l’ensemble de la pile des appels du thread.You can expand this location to show the full call stack for the thread.

  • Le priorité colonne qui contient la priorité ou précédence que le système a assignée à chaque thread.The Priority column, which contains the priority or precedence that the system has assigned to each thread.

  • Le masque d’affinité colonne, qui est une colonne avancée (généralement masquée).The Affinity Mask column, which is an advanced column (usually hidden). Cette colonne indique le masque d'affinité de processeur pour chaque thread.This column shows the processor affinity mask for each thread. Dans un système multiprocesseurs, le masque d'affinité détermine les processeurs sur lesquels un thread peut s'exécuter.In a multiprocessor system, the affinity mask determines which processors on which a thread can run.

  • Le compteur suspendu (généralement masquée), de la colonne qui contient le compteur suspendu et est généralement masquée.The Suspended Count column (usually hidden), which contains the suspended count and is usually hidden. Ce compteur détermine si un thread peut s'exécuter.This count determines whether a thread can run. Pour obtenir une explication sur le compteur suspendu, consultez « Gel et libération des threads » plus loin dans cette rubrique.For an explanation of suspended count, see "Freezing and Thawing Threads" later in this topic.

  • Le nom de processus (généralement masquée), de la colonne qui contient le processus auquel chaque thread appartient.The Process Name column (usually hidden), which contains the process to which each thread belongs. Cette colonne peut être utile lorsque vous déboguez plusieurs processus.This column can be useful when you are debugging multiple processes.

Pour afficher la fenêtre Threads en mode arrêt ou en mode exécutionTo display the Threads window in break mode or run mode

  • Pendant le débogage, sélectionnez le déboguer menu, pointez sur Windows, puis cliquez sur Threads.While debugging, select the Debug menu, point to Windows, and then click Threads.

Pour afficher ou masquer une colonneTo display or hide a column

  • Dans la barre d’outils en haut de la Threads fenêtre, cliquez sur colonnes, puis activez ou désactivez le nom de la colonne que vous souhaitez afficher ou masquer.In the toolbar at the top of the Threads window, click Columns, then select or clear the name of the column that you want to display or hide.

Afficher les Threads avec indicateurDisplay Flagged Threads

Vous pouvez signaler un thread auquel vous souhaitez accorder une attention particulière en le marquant avec une icône dans le Threads fenêtre.You can flag a thread that you want to give special attention by marking it with an icon in the Threads window. Pour plus d’informations, consultez Comment : indicateur et les Threads sans indicateur.For more information, see How to: Flag and Unflag Threads. Dans le Threads fenêtre que vous pouvez choisir d’afficher tous les threads ou uniquement les threads avec indicateur.In the Threads window you can choose to display all the threads or only the flagged threads.

Pour afficher seulement les threads avec indicateurTo display only flagged threads

  • Choisissez le afficher les Threads avec indicateur uniquement bouton en haut de la Threads fenêtre.Choose the Show Flagged Threads Only button at the top of the Threads window. (Si elle est grisée, vous devez signaler tout d’abord des certains threads.)(If it's dimmed, you need to flag some threads first.)

Figer et libérer les ThreadsFreeze and Thaw Threads

Lorsque vous gelez un thread, le système ne démarre pas son exécution même si les ressources sont disponibles.When you freeze a thread, the system will not start execution of the thread even if resources are available.

En code natif, vous pouvez suspendre ou reprendre des threads en appelant les fonctions Windows SuspendThread et ResumeThread ou les fonctions MFC CWinThread::SuspendThread et CWinThread::ResumeThread.In native code, you can suspend or resume threads by calling the Windows functions SuspendThread and ResumeThread or the MFC functions CWinThread::SuspendThread and CWinThread::ResumeThread. Si vous appelez SuspendThread ou ResumeThread, vous modifiez le compteur suspendu, qui s’affiche dans le Threads fenêtre.If you call SuspendThread or ResumeThread, you change the suspended count, which appears in the Threads window. Toutefois, si vous gelez ou libérez un thread natif, vous ne changez pas le compteur suspendu.However, if you freeze or thaw a native thread, you do not change the suspended count. En code natif, un thread ne peut pas s'exécuter sauf s'il est libéré et que son compteur suspendu est égal à zéro.In native code, a thread cannot execute unless it is thawed and has a suspended count of zero.

En code managé, le gel ou la libération d'un thread modifie le compteur suspendu.In managed code, freezing or thawing a thread does change the suspended count. En code managé, un thread gelé possède un compteur suspendu de 1.In managed code, a frozen thread has a suspended count of 1. En code natif, un thread gelé possède un compteur suspendu de 0, à moins qu'il ait été interrompu par un appel SuspendThread.In native code, a frozen thread has a suspended count of 0 unless the thread has been suspended by a SuspendThread call.

Note

Lors du débogage d'un appel entre code natif et code managé, le code managé s'exécute dans le même thread physique que le code natif qui l'a appelé.When you debug a call from native code to managed code, the managed code runs in the same physical thread as the native code that called it. Si vous suspendez ou figez le thread natif, le code managé sera également figé.Suspending or freezing the native thread freezes the managed code also.

Pour geler ou libérer l'exécution d'un threadTo freeze or thaw execution of a thread

  • Dans la barre d’outils en haut de la Threads fenêtre, cliquez sur figer les Threads ou libérer les Threads.In the toolbar at the top of the Threads window, click Freeze Threads or Thaw Threads.

    Cette action affecte uniquement les threads qui sont sélectionnés dans le Threads fenêtre.This action affects only threads that are selected in the Threads window.

Basculer vers un autre threadSwitch to another thread

Une flèche jaune indique le thread actuel (et l’emplacement du pointeur d’exécution).A yellow arrow indicates the current thread (and the location of the execution pointer). Une flèche verte avec extrémité recourbée indique un thread non actuel possède le contexte du débogueur actuel.A green arrow with a curly tail indicates a non-current thread has the current debugger context.

Pour basculer vers un autre threadTo switch to another thread

  • Effectuez l'une des étapes suivantes :Perform either of the following steps:

    • Double-cliquez sur un thread.Double-click any thread.

    • Cliquez sur un thread et sur basculer vers Thread.Right-click a thread and click Switch to Thread.

Groupe et les Threads de triGroup and Sort Threads

Lorsque vous regroupez des threads, un titre s'affiche dans le tableau pour chaque groupe.When you group threads, a heading appears in the table for each group. Ce titre contient une description du groupe, telle que « Thread de travail » ou « Threads sans indicateur », ainsi qu'un contrôle d'arborescence.The heading contains a group description, such as "Worker Thread" or "Unflagged Threads," and a tree control. Les threads membres de chaque groupe apparaissent sous le titre approprié.The member threads of each group appear under the group heading. Si vous souhaitez masquer les threads membres d'un groupe, vous pouvez utiliser le contrôle d'arborescence pour réduire ce groupe.If you want to hide the member threads for a group, you can use the tree control to collapse the group.

Étant donné que le regroupement est prioritaire sur le tri, vous pouvez grouper des threads par catégorie, par exemple, puis les trier par ID dans chaque catégorie.Because grouping takes precedence over sorting, you can group threads by category, for example, and then sort them by ID within each category.

Pour trier des threadsTo sort threads

  1. Dans la barre d’outils en haut de la Threads fenêtre, cliquez sur le bouton en haut de n’importe quelle colonne.In the toolbar at the top of the Threads window, click the button at the top of any column.

    Les threads sont alors triés en fonction des valeurs de la colonne choisie.The threads are now sorted by the values in that column.

  2. Si vous souhaitez inverser l'ordre de tri, cliquez de nouveau sur le bouton.If you want to reverse the sort order, click the same button again.

    Les threads qui figuraient au début de la liste s'affichent maintenant à la fin.Threads that appeared at the top of the list now appear on the bottom.

Pour regrouper des threadsTo group threads

  • Dans le Threads barre d’outils de la fenêtre, cliquez sur le Group by liste, puis cliquez sur les critères que vous souhaitez le regroupement des threads.In the Threads window toolbar, click the Group by list, then click the criteria that you want to group threads by.

Pour trier des threads au sein de groupesTo sort threads within groups

  1. Dans la barre d’outils en haut de la Threads fenêtre, cliquez sur le Group by liste, puis cliquez sur les critères que vous souhaitez le regroupement des threads.In the toolbar at the top of the Threads window, click the Group by list, then click the criteria that you want to group threads by.

  2. Dans le Threads fenêtre, cliquez sur le bouton en haut de n’importe quelle colonne.In the Threads window, click the button at the top of any column.

    Les threads sont alors triés en fonction des valeurs de la colonne choisie.The threads are now sorted by the values in that column.

Pour développer ou réduire tous les groupesTo expand or collapse all groups

  • Dans la barre d’outils en haut de la Threads fenêtre, cliquez sur développer les groupes ou réduire les groupes.In the toolbar at the top of the Threads window, click Expand Groups or Collapse Groups.

Rechercher des Threads spécifiquesSearch for Specific Threads

Dans Visual Studio 2012Visual Studio 2012, vous pouvez rechercher des threads qui correspondent à une chaîne spécifiée.In Visual Studio 2012Visual Studio 2012, you can search for threads that match a specified string. Lorsque vous recherchez des threads dans le Threads , la fenêtre affiche tous les threads qui correspondent à la chaîne de recherche dans n’importe quelle colonne.When you search for threads in the Threads window, the window displays all threads that match the search string in any column. Que les informations incluent l’emplacement de thread qui s’affiche en haut de la pile des appels dans le emplacement colonne.That information includes the thread location that appears at the top of the call stack in the Location column. Par défaut, toutefois, la pile des appels ne porte pas.By default, however, the full call stack is not searched.

Pour rechercher des threads spécifiquesTo search for specific threads

  • Dans la barre d’outils en haut de la Threads fenêtre, accédez à la recherche boîte et soit :In the toolbar at the top of the Threads window, go to the Search box and either:

    • Tapez une chaîne recherchée et appuyez sur ENTRÉE.Type a search string and then press ENTER.

      - ou -- or -

    • Cliquez sur la liste déroulante en regard du recherche zone, puis sélectionnez une chaîne de recherche à partir d’une recherche précédente.Click the drop-down list next to the Search box and select a search string from a previous search.

  • (Facultatif) Pour inclure la pile des appels complète dans votre recherche, sélectionnez rechercher la pile des appels.(Optional) To include the full call stack in your search, select Search Call Stack.

Afficher les piles d’appels de Thread et commutation entre les FramesDisplay Thread Call Stacks and Switching Between Frames

Dans un programme multithread, chaque thread possède sa propre pile d'appel.In a multithreaded program, each thread has its own call stack. Le Threads fenêtre fournit un moyen pratique d’afficher ces piles.The Threads window provides a convenient way to view these stacks.

Tip

Pour obtenir une représentation visuelle de la pile des appels pour chaque thread, utilisez la piles parallèles fenêtre.For a visual representation of the call stack for each thread, use the Parallel Stacks window.

Pour afficher la pile d'appel d'un threadTo view the call stack of a thread

  • Dans le emplacement colonne, cliquez sur le triangle inversé en regard de l’emplacement de thread.In the Location column, click the inverted triangle next to the thread location.

    L’emplacement se développe pour indiquer la pile des appels du thread.The location expands to show the call stack for the thread.

Pour afficher ou réduire les piles d‘appels de tous les threadsTo view or collapse the call stacks of all threads

  • Dans la barre d’outils en haut de la Threads fenêtre, cliquez sur développer la pile des appels ou réduire la pile des appels.In the toolbar at the top of the Threads window, click Expand Call Stacks or Collapse Call Stacks.

Voir aussiSee Also

Déboguer les Applications multithread Debug Multithreaded Applications
Commencer à déboguer une application multithreadGet started debugging a multithreaded application