Débogage des applications multithread
Mise à jour : novembre 2007
Un thread est une séquence d'instructions à laquelle le système d'exploitation alloue du temps processeur. Chaque processus exécuté dans le système d'exploitation se compose d'au moins un thread. Les processus qui comportent plusieurs threads sont appelés multithread.
Les ordinateurs avec plusieurs processeurs, des processeurs multicœur ou des processus d'hyperthreading peuvent exécuter plusieurs threads en même temps. 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.
De plus, le multithreading introduit de nouveaux types de bogues potentiels. 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é. Une forme d'exclusion mutuelle est nécessaire pour s'assurer qu'un seul thread à la fois accède à la ressource. Si l'exclusion mutuelle est exécutée de manière incorrecte, elle peut créer une condition de blocage dans laquelle aucun thread ne peut s'exécuter. Le débogage des blocages peut s'avérer particulièrement compliqué.
Visual Studio 2008 dispose d'une fenêtre Threads améliorée et d'autres améliorations de l'interface utilisateur facilitant le débogage d'applications multithread. Le meilleur moyen pour en savoir plus sur les nouvelles fonctionnalités de l'interface de threading consiste à suivre la procédure pas à pas. Consultez Procédure pas à pas : débogage d'une application multithread.
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. Vous pouvez utiliser des filtres de point d'arrêt pour placer des points d'arrêt sur des threads. Consultez Comment : spécifier un filtre de point d'arrêt.
Le débogage d'une application multithread comportant une interface utilisateur peut s'avérer tout particulièrement difficile. Dans ce cas, vous pouvez envisager d'exécuter l'application sur un deuxième ordinateur et d'utiliser le débogage distant. Pour plus d'informations, consultez Programme d'installation du débogage distant.
Dans cette section
Comment : utiliser la fenêtre Threads
Procédures utiles pour déboguer des threads à l'aide de la fenêtre Threads.Comment : basculer vers un autre thread pendant un débogage
Trois méthodes permettant de basculer le contexte de débogage vers un autre thread.Comment : ajouter et supprimer les indicateurs des threads
Ajoutez des marques ou des indicateurs aux threads auxquels vous souhaitez prêter une attention particulière lors du débogage.Comment : définir un nom de thread dans le code natif
Attribuez au thread un nom qui s'affiche dans la fenêtre Threads.Comment : définir un nom de thread dans le code managé
Attribuez au thread un nom qui s'affiche dans la fenêtre Threads.Procédure pas à pas : débogage d'une application multithread.
Visite guidée des fonctionnalités de débogage de threads, qui insiste sur les fonctionnalités de Visual Studio 2008.Comment : déboguer sur un cluster hautement performant
Techniques permettant de déboguer une application exécutée sur un cluster hautement performant.Conseils pour le débogage de threads en code natif
Techniques simples pouvant être utiles dans le cadre du débogage de threads natifs.
Rubriques connexes
Comment : spécifier un filtre de point d'arrêt
Utilisez des filtres de point d'arrêt pour placer un point d'arrêt sur un thread.Comment : spécifier une action de point de trace/point d'arrêt
Grâce aux points de trace, vous pouvez tracer l'exécution de votre programme sans interruption. Cette fonction peut être utile pour étudier des problèmes tels que les blocages.Threading managé
Concepts de threading en programmation .NET Framework avec exemple de code.Multithreading dans les composants
Utilisation du multithreading dans les composants .NET Framework.Multithreading dans Visual Basic
Concepts de threading et exemple de code pour les programmeurs Visual Basic.Utilisation de threads (Guide de programmation C#)
Concepts de threading et exemple de code pour les programmeurs C#.Multithreading
Concepts de threading et exemple de code pour les programmeurs C++ qui utilisent MFC.Comment : déboguer une application en cluster distante
Instructions relatives à la configuration du débogage distant pour une application exécutée sur un cluster hautement performant.