GPU コードのデバッグ
単位を (GPU) するグラフィックス処理で実行されている C++ コードをデバッグできます。Visual Studio、GPU のデバッグのサポートは、プロセスを開始、およびデバッグ ウィンドウに統合にアタッチして競合の検出が含まれます。
サポートされているプラットフォーム
デバッグ Windows 7は、Windows 8、Windows Server 2008 R2と Windows Server 2012でサポートされます。Windows 8、ソフトウェアのエミュレーターでデバッグの場合、または Windows Server 2012 が必要です。ハードウェアでのデバッグするには、のグラフィックス カードのドライバーをインストールする必要があります。すべてのハードウェア販売元は、デバッガーのすべての機能を実装しません。制限については、販売元のドキュメントを参照してください。
[!メモ]
Visual Studio、GPU のデバッグをサポートするハードウェア独立系販売元は VSD3DDebug のインターフェイスを実装する独自のドライバーを対象とする DLL を作成する必要があります。
GPU のデバッグ構成
デバッガーは同じアプリケーション実行の CPU コードの両方と GPU コードで中断できません。既定では、デバッガーは CPU コードで中断。GPU コードをデバッグするには、次の二つの手順の 1 つを使用する:
[標準] のツール バーの [デバッグの種類] の一覧で、[GPU のみ] を選択します。
プロジェクトのショートカット メニューの [ソリューション エクスプローラー] では、[プロパティ] を選択します。[プロパティ ページ] のダイアログ ボックスで、ボックスの [デバッグ] は、を [デバッガーの種類] の一覧の [GPU のみ] を選択します。
アプリケーションの起動とアタッチ
GPU のデバッグを開始および停止する Visual Studio のデバッグ コマンドを使用できます。詳細については、「Visual Studio Debugger の開始、中断、ナビゲート、および停止」を参照してください。そのプロセスが GPU コードを実行する場合にのみ、GPU の実行プロセスにデバッガーをアタッチできます。詳細については、「方法 : 実行中のプロセスにアタッチする」を参照してください。
カーソルへのカーソルと実行の実行の現在のタイル
GPU でデバッグするときは、カーソル位置に実行するためのオプションが 2 つあります。両方のオプションのコマンドは、コード エディターのショートカット メニューで使用できます。
[カーソル行の前まで実行] のコマンドは、カーソル位置と休憩に達するまで、そのアプリケーションを実行します。これは、現在のスレッドがカーソルに実行されるわけではありません; カーソルのポイントに達する最初のスレッドが休憩を発生させることなく、を意味します。詳細については、「[NIB] 12/13 方法: カーソル位置まで実行する」を参照してください。
次に [現在の Tile をカーソル行の前まで実行] のコマンドは、のアプリケーションをまで現在のタイルに達し、すべてのスレッドと休憩カーソル移動します。
Windows デバッグ
特定のデバッグ ウィンドウを使用して、GPU のスレッドをチェックし、フラグを設定して、固定することもできます。詳細については、次のトピックを参照してください。
スレッドとプロセス (デバッグの場所]ツール バー)
データ同期の例外
デバッガーは、実行時に複数のデータ同期の状態を識別できます。要件が検出されると、デバッガーは休憩の状態になります。2 個のオプション [中断] か [続行] があります。[例外] のダイアログ ボックスを使用して、デバッガーがこれらの条件を検出すると、のために中断条件かどうかを構成できます。詳細については、「例外処理 (デバッグ)」を参照してください。また、書き込まれるデータがデータの値を変更するデバッガーが例外を無視することを指定するに [オプション] のダイアログ ボックスを使用します。詳細については、「[全般] ([オプション] ダイアログ ボックス - [デバッグ])」を参照してください。
トラブルシューティング
アクセラレータの指定
GPU コードのブレークポイントは、コードが accelerator::direct3d_ref (REF) のアクセラレータで実行する場合のみヒットしません。コード内でアクセラレータを指定しない場合、REF のアクセラレータは、プロジェクトのプロパティの [デバッグ アクセラレータの種類] として自動的に選択されます。コードで明示的にアクセラレータを選択すると、REF のアクセラレータは、デバッグ時には使用されず、GPU のハードウェアとデバッグのサポートがない場合、ブレークポイントはヒットしません。コードを記述することによってこれを解決するデバッグ中に REF のアクセラレータを使用します。詳細については、プロジェクト プロパティや アクセラレータおよび accelerator_view オブジェクトの使用 と C++ デバッグ構成のプロジェクト設定 を参照してください。
条件付きブレークポイント
GPU コードの条件付きブレークポイントは、サポートされるデバイスですべての式が評価できません。式は、デバイスに評価できない場合にデバッガーで評価されます。デバッガーは、デバイスより時間が実行されることがあります。
エラー: 選択したデバッグ アクセラレータの型を持つの構成の問題があります。
このエラーは、デバッグ中の PC のプロジェクト設定と構成の間に矛盾がある場合に発生します。詳細については、「C++ デバッグ構成のプロジェクト設定」を参照してください。
エラー: 選択したデバッグ アクセラレータの種類のデバッグのドライバーは、ターゲット コンピューターにインストールします。
このエラーは、デスクトップ コンピューターにリモート デバッグに発生します。デバッガーは実行時までドライバーがリモート デスクトップ コンピューターにインストールされているかどうかを判断できません。ドライバーは、グラフィックス カードのメーカーから使用できます。
エラー: タイムアウトの検出と回復 (TDR) は、リモート サイトで無効にする必要があります。
C++ AMP の計算が Windows のタイムアウトの検出と回復プロセス (TDR) によって設定された既定の期間を超える可能性があります。このとき、計算はキャンセル、データは失われます。詳細については、C++ AMP の TDRs の処理" "を参照してください。
参照
処理手順
チュートリアル : C++ AMP アプリケーションのデバッグ