Déboguer les applications multithread dans Visual StudioDebug Multithreaded Applications in Visual Studio

Un thread est une séquence d'instructions à laquelle le système d'exploitation alloue du temps processeur.A thread is a sequence of instructions to which the operating system allocates processor time. Chaque processus exécuté dans le système d'exploitation se compose d'au moins un thread.Every process that is running in the operating system consists of at least one thread. Les processus qui comportent plusieurs threads sont appelés multithread.Processes that have more than one thread are called multithreaded.

Les ordinateurs avec plusieurs processeurs, des processeurs multicœur ou des processus d'hyperthreading peuvent exécuter plusieurs threads en même temps.Computers with multiple processors, multi-core processors, or hyperthreading processes can run multiple threads at the same time. Le traitement en parallèle de plusieurs threads peut améliorer considérablement les performances du programme. Toutefois, il peut également compliquer le débogage, car il implique la nécessité de suivre plusieurs threads.Parallel processing of multiple threads can greatly improve program performance, but it can also make debugging more difficult because it introduces the need to keep track of multiple threads.

De plus, le multithreading introduit de nouveaux types de bogues potentiels.In addition, multithreading introduces some new types of potential bugs. Par exemple, plusieurs threads doivent souvent accéder à la même ressource, mais un seul thread peut accéder à la ressource en toute sécurité à un moment donné.Often, for example, two or more threads have to access the same resource, but only one thread can safely access the resource at a time. Une forme d'exclusion mutuelle est nécessaire pour s'assurer qu'un seul thread à la fois accède à la ressource.Some form of mutual exclusion is necessary to make sure that only one thread is accessing the resource at a time. Si l’exclusion mutuelle est exécutée de manière incorrecte, elle peut créer un blocage condition dans laquelle aucun thread ne peut s’exécuter.If mutual exclusion is performed incorrectly, it can create a deadlock condition where no thread can execute. Le débogage des interblocages peut s'avérer particulièrement compliqué.Deadlocks can be a particularly hard problem to debug.

Visual Studio fournit différents outils à utiliser dans les applications multithreads de débogage.Visual Studio provides different tools for use in debugging multithreaded apps.

Visual Studio fournit également des points d'arrêt et des points de trace puissants, qui peuvent s'avérer très utiles lors du débogage d'applications multithread.Visual Studio also provides powerful breakpoints and tracepoints, which can be very useful when you debug multithreaded applications. Vous pouvez utiliser des conditions de point d’arrêt et de filtres pour placer des points d’arrêt sur des threads.You can use breakpoint conditions and filters to place breakpoints on individual threads. Consultez à l’aide de points d’arrêt.See Using Breakpoints.

Le débogage d'une application multithread comportant une interface utilisateur peut s'avérer tout particulièrement difficile.Debugging a multithreaded application that has a user interface can be especially difficult. Dans ce cas, vous pouvez envisager d'exécuter l'application sur un deuxième ordinateur et d'utiliser le débogage distant.In that case, you might consider running the application on a second computer and using remote debugging. Pour plus d’informations, consultez débogage distant.For information, see Remote Debugging.

Dans cette sectionIn This Section

Commencer à déboguer une application multithread.Get started debugging a multithreaded application.
Une visite guidée des fonctionnalités, qui insiste sur les fonctionnalités de débogage de threads le piles parallèles fenêtre et espion parallèle fenêtre.A guided tour of thread debugging features, with emphasis on features in the Parallel Stacks window and Parallel Watch window.

Outils de débogage de Threads et processusTools for Debugging Threads and Processes
Répertorie les fonctionnalités des outils pour le débogage des threads et processus.Lists the features of the tools for debugging threads and processes.

Déboguer plusieurs processusDebug Multiple Processes
Explique comment déboguer plusieurs processus.Explains how to debug multiple processes.

Procédure pas à pas : Déboguer à l’aide de la fenêtre Threads.Walkthrough: Debug using the Threads Window.
Procédure pas à pas qui montre comment utiliser le Threads fenêtre et emplacement de débogage barre d’outils.Walkthrough that shows how to use the Threads window and the Debug Location toolbar.

Procédure pas à pas : Déboguer une Application parallèleWalkthrough: Debug a Parallel Application
Procédure pas à pas qui montre comment utiliser le piles parallèles et tâches windows.Walkthrough that shows how to use the Parallel Stacks and Tasks windows.

Guide pratique pour basculer vers un autre thread pendant un débogageHow to: Switch to Another Thread While Debugging
Trois méthodes permettant de basculer le contexte de débogage vers un autre thread.Three ways to switch the debugging context to another thread.

Guide pratique pour ajouter et supprimer les indicateurs des threadsHow to: Flag and Unflag Threads
Ajoutez des marques ou des indicateurs aux threads auxquels vous souhaitez prêter une attention particulière lors du débogage.Mark or flag threads that you want to give special attention to while debugging.

Guide pratique pour déboguer sur un cluster à hautes performancesHow to: Debug On a High-Performance Cluster
Techniques permettant de déboguer une application exécutée sur un cluster hautement performant.Techniques for debugging an application that runs on a high-performance cluster.

Conseils pour le débogage de threads en code natifTips for Debugging Threads in Native Code
Techniques simples pouvant être utiles dans le cadre du débogage de threads natifs.Simple techniques that can be useful for debugging native threads.

Guide pratique pour définir un nom de thread dans du code natifHow to: Set a Thread Name in Native Code
Attribuez au thread un nom qui s’affiche dans le Threads fenêtre.Give your thread a name that you view in the Threads window.

Guide pratique pour définir un nom de thread dans le code managéHow to: Set a Thread Name in Managed Code
Attribuez au thread un nom qui s’affiche dans le Threads fenêtre.Give your thread a name that you view in the Threads window.

Utilisation des points d’arrêtUsing Breakpoints

  • Utiliser des conditions de point d’arrêt ou des filtres lorsque vous souhaitez déboguer un thread individuel.Use breakpoint conditions or filters when you want to debug an individual thread.

  • Grâce aux points de trace, vous pouvez tracer l'exécution de votre programme sans interruption.Tracepoints enable you to trace execution of your program without breaking. Cette fonction peut être utile pour étudier des problèmes tels que les interblocages.This can be useful for studying problems such as deadlocks.

    ThreadThreading
    Concepts de threading en programmation .NET Framework.NET Framework avec exemple de code.Threading concepts in .NET Framework.NET Framework programming, including example code.

    Multithreading dans les composantsMultithreading in Components
    Utilisation du multithreading dans les composants .NET Framework.NET Framework.How to use multithreading in .NET Framework.NET Framework components.

    Prise en charge du multithreading pour le code plus ancien (Visual C++)Multithreading Support for Older Code (Visual C++)
    Concepts de threading et exemple de code pour les programmeurs C++ qui utilisent MFC.Threading concepts and example code for C++ programmers using MFC.

Voir aussiSee Also

Déboguer les Threads et processus Debug Threads and Processes
Débogage à distanceRemote Debugging