Déboguer les applications multithread dans Visual Studio
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 d'interblocage dans laquelle aucun thread ne peut s'exécuter. Le débogage des interblocages peut s'avérer particulièrement compliqué.
Visual Studio 2012 fournit une fenêtre Threads améliorée, la nouvelle fenêtre Threads GPU, la nouvelle fenêtre Espion parallèle et d'autres améliorations de l'interface utilisateur pour faciliter le débogage multithread. Le meilleur moyen d'en savoir plus sur les nouvelles fonctionnalités de l'interface de thread est de suivre les procédures pas à pas. Consultez Procédure pas à pas : débogage d'une application multithread et Procédure pas-à-pas : débogage d'une application C++ AMP.
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 Points d'arrêt : utiliser les nombres d'accès, les fonctions de la pile des appels et les conditions d'arrêt quand et où vous le voulez dans le débogueur Visual Studio.
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 Débogage et diagnostics distants.
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.Utilisation de la fenêtre Tâches
Affiche une liste de tous les objets de tâche managés ou natifs, en indiquant notamment leur état et d'autres informations utiles.Utilisation de la fenêtre Piles parallèles
Affiche les piles d'appels de plusieurs threads (ou tâches) dans une vue unique et fusionne également les segments de pile qui sont communs aux threads (ou tâches).Procédure pas à pas : débogage d'une application parallèle
Procédure pas à pas qui indique comment utiliser les fenêtres Tâches parallèles et Piles parallèles.Comment : utiliser la fenêtre Espion parallèle
Examinez les valeurs et les expressions entre plusieurs threads.Comment : utiliser la fenêtre Threads GPU
Examinez et utilisez les threads qui s'exécutent sur le GPU pendant le débogage.
Rubriques connexes
-
Utilisez des filtres de point d'arrêt pour placer un point d'arrêt sur un thread.
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 interblocages.
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.Prise en charge du multithreading pour le code plus ancien (Visual C++)
Concepts de threading et exemple de code pour les programmeurs C++ qui utilisent MFC.