Aktivieren von Direct3D-Debuginformationen (Direct3D 9)

Versuchen Sie, während des Debuggens weitere Informationen zu Direct3D-Objekten zu erhalten? Für instance zeigt der folgende Screenshot, was Normalerweise angezeigt wird, wenn Sie eine Direct3D-Schnittstelle im watch-Fenster betrachten.

Screenshot einer Direct3d-Schnittstelle im fenster

Sie können die Kerndebugobjekte aktivieren, sodass ein gespiegeltes Objekt, das alle Eigenschaften des Objekts enthält, im fenster watch angezeigt werden kann. Fügen Sie einfach die folgenden #define in Ihren Code vor der Datei D3D9.h ein:

#define D3D_DEBUG_INFO

Um Debuginformationen zu aktivieren, muss die #define vor der Datei D3D9.h erstellt werden (Jedes Programm, das DXUT verwendet, aktiviert automatisch D3D_DEBUG_INFO, wenn das Programm zum Debuggen kompiliert wird). Wenn Sie ein SDK-Beispiel ausführen, können Sie dies in DXStdAfx.h sehen (was sich auf alle C++-Beispiele auswirkt). Sie müssen auch die Direct3D-Debuglaufzeit ausführen (die bei Bedarf über die Systemsteuerung aktiviert werden kann).

Hier sehen Sie ein Beispiel für das BasicHLSL-Beispiel.

  1. Fügen Sie die #define der Datei Dxstdafx.h vor Zeile 37 hinzu.
  2. Erstellen Sie ein Debugprojekt.
  3. Festlegen eines Haltepunkts an Zeile 307 in BasicHLSL.cpp
  4. Führen Sie den Debugger aus.

Der folgende Screenshot zeigt die Art der detaillierten Informationen, die Sie über ein Direct3D-Texturobjekt aus dem watch Fenster abrufen können.

Screenshot eines Direct3d-Texturobjekts im watch-Fenster

Hinweis

Die Objekteigenschaftennamen sind nur sichtbar, und die Werte sind nur korrekt, wenn die Debugruntime aktiviert ist. Bei der Ausführung für die Verkaufslaufzeit sind die Werte ungültig.

 

Verwenden der Aufrufliste für erweitertes Debuggen

Wenn Direct3D-Debug aktiviert ist, können Sie bei jeder Erstellung eines Objekts auch eine Aufrufliste anzeigen. Dadurch wird Ihre Anwendung sehr langsam, kann aber verwendet werden, um auf Ressourcenlecks zu überprüfen. Legen Sie zum Schreiben der Aufrufliste den folgenden Registrierungsschlüssel auf 1 fest:

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

Wenn Sie Ihre Anwendung mit aktiviertem Debuggen erstellen, erhalten Sie Zugriff auf diese zusätzliche Variable:

  LPCWSTR CreationCallStack;

Diese Variable speichert die Aufrufliste jedes Mal, wenn ein Objekt erstellt wird. Dadurch wird Ihre Anwendung sehr langsam, kann aber zum Debuggen von Ressourcenlecks verwendet werden.

Programmiertipps