Activation des informations de débogage Direct3D (Direct3D 9)

Essayez-vous d’obtenir plus d’informations sur les objets Direct3D pendant le débogage ? Par instance, la capture d’écran suivante montre ce que vous voyez généralement lorsque vous regardez une interface Direct3D dans la fenêtre watch.

capture d’écran d’une interface direct3d dans la fenêtre watch

Vous pouvez activer les objets de débogage principaux afin qu’un objet mis en miroir qui contient toutes les propriétés de l’objet puisse être consulté dans la fenêtre watch. Incluez simplement les #define suivantes dans votre code avant le fichier D3D9.h :

#define D3D_DEBUG_INFO

Pour activer les informations de débogage, le #define doit être généré avant le fichier D3D9.h (tout programme utilisant DXUT active automatiquement D3D_DEBUG_INFO lorsque le programme est compilé pour le débogage). Si vous exécutez un exemple de SDK, vous pouvez le voir dans DXStdAfx.h (qui affecte tous les exemples C++). Vous devez également exécuter le runtime Direct3D de débogage (qui peut être activé à partir du Panneau de configuration si nécessaire).

Voici un exemple utilisant l’exemple BasicHLSL.

  1. Ajoutez le #define au fichier Dxstdafx.h avant la ligne 37.
  2. Générez un projet de débogage.
  3. Définir un point d’arrêt à la ligne 307 dans BasicHLSL.cpp
  4. Exécutez le débogueur.

La capture d’écran suivante montre le type d’informations détaillées que vous pouvez obtenir sur un objet de texture Direct3D à partir de la fenêtre watch.

capture d’écran d’un objet de texture direct3d dans la fenêtre watch

Notes

Les noms des propriétés d’objet sont visibles et les valeurs sont correctes uniquement lorsque le runtime de débogage est activé. Lors de l’exécution sur le runtime de vente au détail, les valeurs ne sont pas valides.

 

Utiliser la pile des appels pour le débogage étendu

Avec le débogage Direct3D activé, vous pouvez également examiner une pile d’appels chaque fois qu’un objet est créé. Cela rendra votre application très lente, mais peut être utilisée pour case activée pour les fuites de ressources. Pour écrire la pile des appels, définissez la clé de Registre suivante sur 1 :

\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Direct3D\\
D3D9Debugging\\EnableCreationStack

La création de votre application avec le débogage activé vous donne accès à cette variable supplémentaire :

  LPCWSTR CreationCallStack;

Cette variable stocke la pile des appels chaque fois qu’un objet est créé. Cela rendra votre application très lente, mais peut être utilisée pour déboguer des fuites de ressources.

Conseils de programmation