> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Détection des exceptions de nuanceur dans les GPU Captures

> Détection des exceptions de nuanceur dans les GPU Captures

Depuis le GDK de juin 2023, les nuanceurs qui lèvent des exceptions peuvent être détectés dans les GPU Captures. Cette fonctionnalité étend aux GPU Captures le [débogage en direct des nuanceurs sur les exceptions](/fr-CA/tools/tools-console/pix/pix-shader-exceptions-live-debugging). Elle détecte les nuanceurs qui lèvent des exceptions dans l'ensemble de la GPU Capture et présente le résultat sous forme de rapport récapitulatif. Une nouvelle vue **Shader Exceptions** est ajoutée à cet effet à la disposition GPU Capture de PIX. Les exceptions de nuanceur sont masquées par défaut sur XBOX Series X|S. Cette fonctionnalité vous permet de les démasquer afin de détecter et de déboguer les nuanceurs qui lèvent des exceptions dans l'ensemble de l'image. Les exceptions actuellement prises en charge sont : valeur non valide (y compris NaN), division flottante par zéro, division entière par zéro, dépassement de capacité positif et négatif.

<a id="ID4EYE" />

## Détecter les exceptions

La vue Shader Exceptions affiche un panneau **Detect Exceptions**. Ce panneau présente les types d'exceptions pris en charge parmi lesquels vous pouvez choisir. Tous les types d'exceptions sont sélectionnés par défaut. Le panneau affiche aussi la liste des étapes de nuanceur à prendre en compte pour la détection des exceptions. Toutes les étapes de nuanceur sont sélectionnées par défaut. Notez que l'analyse pixie est requise pour détecter les exceptions de nuanceur. Après avoir sélectionné les exceptions et les étapes de nuanceur souhaitées, appuyez sur le bouton Detect pour générer le rapport récapitulatif des exceptions.

<img src="https://mintcdn.com/microsoft-4404708b/ktEik-YaZoen6Rhy/images/gdk/tools/GCSE_Detect_Exceptions_Panel.png?fit=max&auto=format&n=ktEik-YaZoen6Rhy&q=85&s=8c1c29b6698f48d66502a44219f803b2" alt="Panneau Detect Exceptions" width="182" height="307" data-path="images/gdk/tools/GCSE_Detect_Exceptions_Panel.png" />

<a id="ID4EYE" />

## Rapport récapitulatif des exceptions

Le rapport récapitulatif des exceptions affiche des entrées pour toutes les exceptions sélectionnées qui ont été déclenchées. Chaque entrée du journal d'exceptions indique l'adresse de l'instruction du nuanceur (PC), la liste des exceptions et le nombre d'occurrences. Notez que le PC pointe vers l'instruction qui suit celle qui lève une exception. Un nom de fonction est aussi affiché pour les nuanceurs de lancer de rayons. Le nom du fichier HLSL, la signature de la fonction et le numéro de ligne HLSL correspondant au PC sont affichés si les PDB sont résolus et si les mappages de lignes sont disponibles. Ces entrées d'exception sont affichées par étape de nuanceur sélectionnée et par Global ID. Un bouton **Open in Debugger** est présent pour chaque entrée du journal d'exceptions afin que vous puissiez déboguer le nuanceur et observer les exceptions en action.

<img src="https://mintcdn.com/microsoft-4404708b/ktEik-YaZoen6Rhy/images/gdk/tools/GCSE_Exception_Summary_Report.png?fit=max&auto=format&n=ktEik-YaZoen6Rhy&q=85&s=c1cf0e538ce7173ee64c185a14a2d24e" alt="Rapport récapitulatif des exceptions" width="1506" height="187" data-path="images/gdk/tools/GCSE_Exception_Summary_Report.png" />

Depuis le GDK d'octobre 2023, les valeurs d'ID de groupe sont répertoriées pour chaque entrée du journal d'exceptions, pour les nuanceurs de calcul uniquement. Le bouton **Open in Debugger** lance une session de débogage avec ces valeurs d'ID de groupe afin que vous puissiez reproduire l'exception répertoriée avec le débogueur de nuanceurs.

<img src="https://mintcdn.com/microsoft-4404708b/ktEik-YaZoen6Rhy/images/gdk/tools/GCSE_Detailed_Exception_Report.png?fit=max&auto=format&n=ktEik-YaZoen6Rhy&q=85&s=1882ca4b09a24bf0fc2cb21fbf6073cc" alt="Exceptions détaillées" width="1500" height="244" data-path="images/gdk/tools/GCSE_Detailed_Exception_Report.png" />

<a id="ID4EYE" />

## Déboguer un nuanceur qui lève des exceptions

Les exceptions de nuanceur peuvent être étudiées en déboguant le nuanceur dans PIX. Pour ce faire, appuyez sur la flèche verte à côté du nuanceur à étudier. Le nuanceur s'ouvre alors dans le débogueur avec les exceptions démasquées. Vous pouvez déboguer le nuanceur de la même façon que dans un scénario sans exception, mais une notification concernant les exceptions déclenchées s'affiche lorsque le PC atteint l'instruction mentionnée dans l'entrée du journal. Le bouton « Run to Exception » permet d'accéder rapidement à la ligne qui déclenche les exceptions. Notez qu'il s'arrête à l'instruction qui suit celle qui lève une exception. Les bits d'exception du registre trapsts peuvent aussi être inspectés pour vérifier les exceptions déclenchées. Le retour en arrière pas à pas permet de trouver la source de l'exception. Notez que les exceptions ne sont démasquées que si la session de débogage a été lancée depuis la vue Shader Exceptions.

<Note>
  Le comportement numérique des nuanceurs est différent lorsque les exceptions numériques sont démasquées.
</Note>

Notez que le nuanceur ouvert dans le débogueur utilise des paramètres par défaut. Il est possible que les exceptions mentionnées dans le journal ne soient pas déclenchées par cette vague de nuanceur en particulier. Il n'est actuellement pas possible de localiser la vague de nuanceur exacte qui lève les exceptions, mais nous prévoyons d'ajouter cette possibilité dans la prochaine version du GDK. En attendant, vous pouvez essayer de modifier les paramètres du nuanceur pour localiser la vague qui lève les exceptions qui vous intéressent.

<a id="ID4EYE" />

### Exceptions prises en charge

Les exceptions numériques suivantes peuvent actuellement être détectées dans les GPU Captures : valeur non valide (y compris NaN), division flottante par zéro, division entière par zéro, dépassement de capacité positif et négatif.

<a id="InvalidException" />

#### Exception de valeur non valide

Les exceptions de valeur non valide sont levées lorsqu'un opérande n'est pas valide pour l'opération. Le résultat est un QNaN. Ces exceptions peuvent se produire lorsqu'un opérande est un NaN, ou pour d'autres valeurs, par exemple :

V\_FRACT\_F32 pour INF V\_SIN\_F32/V\_COS\_F32 pour INF V\_MIN/MAX\_F32 pour INF V\_LOG\_CLAMP\_F32 pour une entrée négative V\_LOG\_LEGACY\_F32 pour une entrée négative V\_RSQ/RSQ\_CLAMP/RSQ\_LEGACY\_F32 pour une entrée négative V\_SQRT\_F32 pour une entrée négative V\_FREXP\_EXP\_I32\_F32 et V\_FREXP\_MANT\_F32 pour INF V\_CVT\_U32\_F32 pour une valeur hors de la plage UINT V\_CVT\_I32\_F32 pour des valeurs hors de la plage INT V\_DIV\_FIXUP\_F32 pour 0/0 et INF/INF

<a id="FDZException" />

#### Exception de division flottante par zéro

L'exception de division flottante par zéro est levée lorsqu'une valeur flottante est divisée par zéro. Le résultat est +/-INF.

<a id="IDZException" />

#### Exception de division entière par zéro

L'exception de division entière par zéro est levée lorsqu'une valeur entière est divisée par zéro. Le résultat est indéfini.

<a id="OflException" />

#### Exception de dépassement de capacité positif

L'exception de dépassement de capacité positif est levée lorsque le résultat arrondi est supérieur à la valeur maximale UINT/INT/float. Le résultat est le nombre maximal signé ou INF.

<a id="UflException" />

#### Exception de dépassement de capacité négatif

L'exception de dépassement de capacité négatif est levée lorsque le résultat exact ou arrondi est inférieur au plus petit nombre normal (non dénormalisé) représentable. Le résultat est un nombre dénormalisé ou zéro.

<a id="remarks" />

## Remarques

Le comportement numérique des nuanceurs est différent lorsque les exceptions numériques sont démasquées.

Notez que le nuanceur ouvert dans le débogueur utilise des paramètres par défaut. Il est possible que les exceptions mentionnées dans le journal ne soient pas déclenchées par cette vague de nuanceur en particulier. Il n'est actuellement pas possible de localiser la vague de nuanceur exacte qui lève les exceptions, mais nous prévoyons d'ajouter cette possibilité dans la prochaine version du GDK. En attendant, vous pouvez essayer de modifier les paramètres du nuanceur pour localiser la vague qui lève les exceptions qui vous intéressent.

## Voir aussi

[Débogage en direct sur les exceptions de nuanceur](/fr-CA/tools/tools-console/pix/pix-shader-exceptions-live-debugging)

[Développement de jeux sur console XBOX (environnement et outils)](/fr-CA/tools/tools-console/gc-tools-console-toc)


## Related topics

- [Débogage en direct dans Visual Studio sur les exceptions de nuanceur](/fr-CA/tools/tools-console/hix/shader-exceptions-live-debugging-in-vs.md)
- [Répertoire des rubriques NDA : liens actifs vers Microsoft Learn](/fr-CA/nda/nda-topic-directory.md)
- [Capture GPU et analyse des performances avec PIX](/fr-CA/tools/tools-console/pix/gpu/index.md)
- [PIX sur XBOX et Windows pour les titres GDK](/fr-CA/tools/tools-console/pix/index.md)
- [Outil Hang Investigation for XBOX (HIX)](/fr-CA/tools/tools-console/hix/index.md)
