Partager via


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

Rubriques connexes

Voir aussi

Autres ressources

Déboguer les threads et processus dans Visual Studio

Débogage et diagnostics distants