Freigeben über


Debuggen von GPU-Code

Sie können C++-Code debuggen, der auf die Grafikverarbeitungseinheit (GPU) ausgeführt wird.GPU-Debugunterstützung in Visual Studio umfasst Rennerkennung, auslösende Prozesse und das Anfügen an ihnen und zur Integration in die Zum Debuggen verwendete Fenster.

Unterstützte Plattformen

Debuggen wird auf Windows 7, Windows 8, Windows Server 2008 R2 und Windows Server 2012 unterstützt.Für das Debuggen auf dem Software-Emulator, ist Windows 8 oder Windows Server 2012 erforderlich.Für das Debuggen auf der Hardware, müssen Sie die Treiber für die Grafikkarte installieren.Nicht alle Hardwarehersteller implementieren alle Debuggerfeatures.Siehe die Anbieterdokumentation für Einschränkungen.

HinweisHinweis

Unabhängige Hardwareanbieter, die GPU-Debugging in Visual Studio unterstützen möchten, müssen eine DLL erstellen, das die VSD3DDebug-Schnittstelle implementiert und ihre eigenen Treiber abzielt.

Konfigurieren von GPU-Debugging

Der Debugger kann nicht auf CPU-Code und GPU-Code in derselben App-Ausführung unterbrechen.Standardmäßig die so auf CPU-Code.Um GPU-Code zu debuggen, verwenden Sie einen dieser beiden Schritte:

  • In der Liste Debugtyp auf der Symbolleiste Standard, wählen Sie Nur GPU aus.

  • In Projektmappen-Explorer im Kontextmenü für das Projekt, wählen Sie Eigenschaften aus.Im Dialogfeld wählen Eigenschaftenseiten ausgewähltes Debugging und dann Nur GPUDebuggertyp in der Liste aus.

Starten und Anfügen an Anwendungen

Sie können Visual Studio-Debuggingsbefehle verwenden, GPU-Debugging starten und beenden.Weitere Informationen finden Sie unter Starten, Unterbrechen, Navigieren und Anhalten des Visual Studio-Debuggers.Sie können den GPU-Debugger an einen laufenden Prozess auch anfügen, jedoch nur, wenn dieser Prozess GPU-Code ausführt.Weitere Informationen finden Sie unter Gewusst wie: Anfügen an einen laufenden Prozess.

Ausführungs-aktuelle Kachel zum Cursor und zur Ausführen bis Cursor

Wenn Sie auf dem GPU debuggen, haben Sie zwei Möglichkeiten zum Ausführen zur Cursorposition.Die Befehle für beide Optionen sind im Kontextmenü des Code-Editors verfügbar.

  1. Der Befehl Ausführen bis Cursor führt die Anwendung aus, bis er die Cursorposition und dann die Timeouts erreicht.Dies bedeutet nicht, dass der aktuelle Thread zum Cursor ausgeführt wird; und bedeutet, dass der erste Thread, der den Cursorposition erreicht, die Unterbrechung auslöst.Weitere Informationen finden Sie unter [NIB] 12/13 Gewusst wie: Ausführung bis zur Cursorplatzierung.

  2. Der Befehl Aktuelle Kachel bis zum Cursor ausführen führt die Anwendung aus, bis alle Threads in der aktuellen Kachel den Cursor und dann die Timeouts erreichen.

Debuggen Windows

Wenn Sie bestimmte Zum Debuggen verwendete Fenster verwenden, können Sie GPU-Threads überprüfen, kennzeichnen und fixieren.Weitere Informationen finden Sie unter:

Datensynchronisierungs-Ausnahmen

Der Debugger kann mehrere Datensynchronisierungszustände während der Ausführung identifizieren.Wenn eine Bedingung gefunden wird, gibt der Debugger den Unterbrechungszustand ein.Sie haben zwei Möglichkeiten Unterbrechen oder Weiter.Mit dem Dialogfeld Ausnahmen verwenden, können Sie konfigurieren, ob der Debugger diese Bedingungen erkennt und auch die Bedingungen, die für unterbricht.Weitere Informationen finden Sie unter Ausnahmebehandlung (Debuggen).Sie können das Dialogfeld Optionen auch verwenden, um anzugeben, dass der Debugger Ausnahmen ignorieren soll, wenn die Daten, die geschrieben wird, nicht den Wert der Daten ändern.Weitere Informationen finden Sie unter Allgemein, Debuggen, Dialogfeld "Optionen".

Problembehandlung

Hh873126.collapse_all(de-de,VS.110).gifAngeben einer Zugriffstaste

Haltepunkte in GPU-Code werden nur erreicht, wenn der Code auf die Zugriffstaste accelerator::direct3d_ref (REF) ausgeführt wird.Wenn Sie keine Zugriffstaste im Code angeben, wird die REF-Zugriffstaste automatisch als Debuggingbeschleunigungstyp in den Projekteigenschaften ausgewählt.Wenn der Code explizit eine Zugriffstaste auswählt, wird die REF-Zugriffstaste während des Debuggens nicht verwendet und die Haltepunkte werden nicht ausgelöst, es sei denn, die GPU-Hardware Debugunterstützung verfügt.Sie können dieses beheben, indem Sie den Code schreiben, um die REF-Zugriffstaste während des Debuggens verwendet.Weitere Informationen finden Sie Projekteigenschaften und Verwenden von accelerator-Objekten und accelerator_view-Objekten und Projekteinstellungen für eine C++-Debugkonfiguration.

Hh873126.collapse_all(de-de,VS.110).gifBedingte Haltepunkte

Bedingte Haltepunkte in GPU-Code werden unterstützt, jedoch nicht jeder Ausdruck kann auf das Gerät ausgewertet werden.Wenn ein Ausdruck nicht auf das Gerät ausgewertet werden kann, wird er auf den Debugger ausgewertet.Der Debugger ist wahrscheinlich, langsam ausgeführt werden als das Gerät.

Hh873126.collapse_all(de-de,VS.110).gifFehler: Es gibt ein Konfigurationsproblem mit dem ausgewählten debuggenden Zugriffstasten-Typ. 

Dieser Fehler tritt auf, wenn eine führt zwischen den Projekteinstellungen und der Konfiguration des PC gibt an, dass Sie debuggen.Weitere Informationen finden Sie unter Projekteinstellungen für eine C++-Debugkonfiguration.

Hh873126.collapse_all(de-de,VS.110).gifFehler: Der Treiber Debugsymbole für den ausgewählten debuggenden Zugriffstasten-Typ wird nicht auf dem Zielcomputer installiert.

Dieser Fehler tritt auf, wenn Sie auf einem Remote- PC debuggen.Der Debugger kann erst zur Laufzeit bestimmen, ob die Treiber auf dem Remote PC installiert werden.Die Treiber sind vom Ersteller der Grafikkarte verfügbar.

Hh873126.collapse_all(de-de,VS.110).gifFehler: TIMEOUTerkennung und Wiederherstellung (TDR) müssen auf der Remotewebsite deaktiviert werden.

Es ist möglich C++-AMP-Berechnungen, das standardmäßige Zeitintervall zu überschreiten, das von der Windows-TIMEOUTerkennung und den Wiederherstellungsvorgang (TDR) festgelegt ist.Wenn das geschieht, wird die Berechnung abgebrochen und die Daten verloren.Weitere Informationen finden Sie unter Behandlung von TDRs in C++-AMP.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Debuggen einer C++ AMP-Anwendung

Referenz

Projekteinstellungen für eine C++-Debugkonfiguration

Weitere Ressourcen

Starten Sie GPU-Debugging in Visual Studio