Partager via


Débogage HLSL

Le débogueur HLSL, qui est l'un des outils de diagnostic de graphiques dans Visual Studio, peut vous aider à comprendre comment votre code de nuanceur HLSL fonctionne avec les données de graphiques qui était stockées pendant une session de capture de diagnostics de graphiques.

Le débogueur HLSL se présente comme suit :

Débogage HLSL utilisant la fenêtre de la pile des appels et la fenêtre espion.

Fonctionnement du débogueur HLSL

Le débogueur HLSL peut vous aider à comprendre les problèmes qui surviennent dans votre code de nuanceur.Le débogage du code HLSL dans Visual Studio ressemble au débogage du code écrit dans un autre langage, par exemple, C++, C# ou Visual Basic.Vous pouvez examiner le contenu des variables, définir des points d'arrêt, parcourir le code, et remonter la pile d'appels, comme lorsque vous déboguez d'autres langages.

Toutefois, étant donné que le matériel et le logiciel de l'unité centrale (code d'application) sont si différents du matériel et du logiciel du GPU (code de nuanceur), une expérience de débogage similaire à celle de l'unité centrale n'est pas possible sur un GPU à moins que le débogueur de GPU fonctionne de manière fondamentalement différente.La différence fondamentale entre les types de tâches que les GPU et les UC effectuent réside dans le fait que les GPU étalent le travail entre des centaines de processeurs relativement lents et simples, qui sont optimisés pour les opérations graphiques pour gérer les groupes de données très volumineux, alors que les UC utilisent une poignée de processeurs rapides et relativement compliqués qui peuvent gérer de plus petites charges de travail, à caractère général.En outre, comme un GPU est essentiellement un ordinateur indépendant qui gère ses propres mécanismes internes et partage rarement des informations avec l'unité centrale, il est très difficile pour un débogueur qui s'exécute sur l'unité centrale de savoir ce qui se passe sur le GPU à un moment donné.Même si une unité centrale peut y faire face, le code de GPU utilise trop de threads et génère un trop grand nombre de données pour qu'un développeur puisse toutes les analyser.

Pour contourner ces problèmes, le débogueur HLSL recrée les frames capturés en utilisant les informations enregistrées dans un journal de graphiques, plutôt que d'essayer de surveiller un GPU en temps réel lorsqu'il exécute le code d'un nuanceur.Étant donné qu'un journal de graphiques contient suffisamment d'informations pour recréer une partie de la sortie, et que les diagnostics de graphiques fournissent des outils permettant de désigner exactement le pixel et l'événement précis où se produit une erreur, le débogueur HLSL doit simplement simuler le thread shader qui vous intéresse.Cela signifie que le travail du nuanceur peut être simulée sur l'UC, où les mécanismes internes sont affichés en plein écran.Cela permet au débogueur HLSL de bénéficier d'une expérience de débogage similaire à celle de l'UC.

Toutefois, le débogueur HLSL est actuellement limité des façons suivantes :

  • Le débogueur HLSL ne prend pas en charge l'option Modifier & Continuer.

  • Il est impossible de déboguer une application et son code de nuanceur simultanément.Toutefois, vous pouvez les alterner.

  • Vous pouvez ajouter des variables et des registres à la fenêtre Espion, mais les expressions ne sont pas prises en charge.

  • Les nuanceurs de calcul ne sont pas pris en charge.

Néanmoins, le débogueur HLSL offre une expérience de débogage meilleure et plus similaire à celle de l'UC.

Voir aussi

Tâches

Procédure pas à pas : objets manquants en raison de Vertex Shader

Procédure pas à pas : débogage des erreurs de rendus dues à la trame