Threads et processus

Les threads et processus sont des concepts liés en informatique. Tous deux représentent des séquences d'instructions qui doivent s'exécuter dans un ordre spécifique. Les instructions dans des threads ou processus séparés, toutefois, peuvent s'exécuter en parallèle.

Les processus existent dans le système d'exploitation et correspondent à ce que les utilisateurs voient sous la forme de programmes ou d'applications. Un thread, en revanche, existe dans un processus. C'est pour cette raison que les threads sont parfois appelés processus légers. Chaque processus est constitué d'un ou de plusieurs threads.

L'existence de plusieurs processus permet à un ordinateur d'effectuer plusieurs tâches à la fois. L'existence de plusieurs threads permet à un processus de séparer le travail à exécuter en parallèle. Sur un ordinateur multiprocesseur, les processus ou les threads peuvent s'exécuter sur différents processeurs. Ce type d'exécution permet un véritable traitement en parallèle.

Le traitement en parallèle parfait n'est pas toujours possible. Les threads doivent parfois être synchronisés. Un thread peut attendre le résultat d'un autre thread ou un thread peut avoir besoin d'un accès exclusif à une ressource utilisée par un autre thread. Les problèmes de synchronisation sont une cause courante de bogues dans les applications multithread. Les threads attendent parfois une ressource qui n'est jamais disponible. Cet état est appelé interblocage.

Le débogueur Visual Studio propose des outils performants mais faciles à utiliser pour déboguer les threads et les processus.

Outils pour le débogage de threads et processus dans Visual Studio

Les principaux outils pour le débogage des processus dans Visual Studio sont la boîte de dialogue Attacher au processus, la fenêtre Processus et la barre d'outils Emplacement de débogage. Les principaux outils pour le débogage des threads sont la fenêtre Threads, les marqueurs de thread dans les fenêtres source et la barre d'outils Emplacement de débogage.

Les principaux outils de débogage d'applications multithread sont les fenêtres Piles parallèles et Tâches parallèles.

Le tableau suivant affiche les informations disponibles et les actions que vous pouvez exécuter depuis chacun de ces emplacements :

Interface utilisateur

Informations disponibles

Actions que vous pouvez effectuer

Boîte de dialogue Attacher au processus

Processus disponibles auxquels vous pouvez attacher :

  • Nom de processus (.exe)

  • Numéro d'identification de processus

  • Titre de barre de menus

  • Type (Managé v4.0 ; Managé v2.0, v1.1, v1.0 ; x86 ; x64 ; IA64)

  • Nom d'utilisateur (nom du compte)

  • Numéro de session

Sélectionnez un processus auquel attacher

Sélectionnez un ordinateur distant

Modifiez le type de transport pour la connexion aux ordinateurs distants

Fenêtre Processus.

Processus attachés :

  • Nom du processus

  • Numéro d'identification de processus

  • Chemin d'accès pour traiter .exe

  • Titre de barre de menus

  • État (Break. Running)

  • Débogage (natif, managé, etc.)

  • Type de transport (par défaut, natif sans authentification)

  • Qualificateur de transport (ordinateur distant)

Outils :

  • Attacher

  • Détacher

  • Terminer

Menu contextuel :

  • Attacher

  • Détacher

  • Détacher lorsque le débogage est arrêté

  • Terminer

Fenêtre Threads

Threads dans le processus actuel :

  • ID de thread

  • ID managé

  • Catégorie (thread principal, thread d'interface, gestionnaire d'appel de procédure distante ou thread de travail)

  • Nom du thread

  • Emplacement de création du thread

  • Priorité

  • Masque d'affinité

  • Compteur suspendu

  • Nom du processus

  • Indicateur

  • Indicateur suspendu

Outils :

  • Rechercher

  • Rechercher la pile des appels

  • Signaler uniquement mon code

  • Signaler la sélection de modules personnalisés

  • Regrouper par

  • Columns

  • Développer/réduire la pile des appels

  • Développer/réduire les groupes

  • Figer/libérer les threads

Menu contextuel :

  • Afficher les threads dans la source

  • Basculer vers un thread

  • Figer un thread actuel

  • Libérer un thread figé

  • Ajouter l'indicateur d'un thread dans le cadre d'une étude supplémentaire

  • Supprimer l'indicateur d'un thread

  • Renommer un thread

  • Afficher et masquer des threads

Autres actions :

  • Afficher la pile d'appel d'un thread dans un DataTip

Fenêtre source

Les indicateurs de thread de la reliure de gauche signalent un ou plusieurs threads (option désactivée par défaut, activée à l'aide du menu contextuel de la fenêtre Threads)

Menu contextuel :

  • Basculer vers un thread

  • Ajouter l'indicateur d'un thread dans le cadre d'une étude supplémentaire

  • Supprimer l'indicateur d'un thread

Barre d'outils Emplacement de débogage

  • Processus en cours

  • Thread en cours

  • Frame de pile en cours

  • Basculer vers un autre processus

  • Basculer vers un autre thread dans le processus en cours

  • Basculer vers un autre frame de pile dans le thread en cours

  • Ajouter ou supprimer l'indicateur de threads actuels

  • Afficher seulement des threads avec indicateur

Fenêtre Piles parallèles

  • Piles des appels pour plusieurs threads dans une fenêtre.

  • Frame de pile actif pour chaque thread.

  • Appelants et appelés pour toute méthode.

  • Éliminer les threads spécifiés par filtrage

  • Basculer vers la vue Tâches parallèles

  • Ajouter ou supprimer l'indicateur d'un thread

  • Zoom

Fenêtre Tâches parallèles

  • Affichez des informations sur les objets Task, notamment l'ID de la tâche, son état (planifié, en cours, en attente, bloqué), ainsi que le thread qui lui est assigné.

  • Emplacement actuel dans la pile des appels

  • Délégué transmis à la tâche au moment de la création

  • Basculer vers la tâche actuelle

  • Ajouter ou supprimer l'indicateur d'une tâche

  • Geler ou libérer une tâche

Voir aussi

Tâches

Comment : utiliser la fenêtre Processus

Autres ressources

Attachement à des processus en cours d'exécution

Débogage des applications multithread