共用方式為


偵錯 GPU 程式碼

您可以偵錯在圖形處理單元 (GPU) (GPU) 執行的 C++ 程式碼。 GPU 在 Visual Studio 的偵錯支援包括競爭執行偵測,啟動處理序和附加至和整合到偵錯視窗中。

支援的平台

偵錯在 Windows 7、 Windows 8、 Windows Server 2008 R2和 Windows Server 2012支援。 對於軟體模擬器的偵錯,需要 Windows 8或 Windows Server 2012 。 如需在硬體的偵錯,您必須安裝圖形卡的驅動程式。 並非所有的硬體廠商實作所有偵錯工具功能。 為限制參閱廠商文件。

注意事項注意事項

若要支援在 Visual Studio 的 GPU 偵錯的獨立硬體廠商 (IHV) 必須建立實作介面 VSD3DDebug 和以自己的驅動程式的 DLL。

配置的 GPU 偵錯

偵錯工具在兩個 CPU 程式碼和 GPU 程式碼可能不會在相同應用程式執行。 根據預設,偵錯工具在 CPU 程式碼中斷。 若要偵錯 GPU 程式碼,請使用這兩個步驟之一:

  • 在 [標準] 工具列的 [偵錯型別] 清單中,選取 [只有 GPU]。

  • 在 [方案總管] 中,在專案的捷徑功能表上,選擇 [屬性]。 在 [屬性頁] 對話方塊中,選取 [偵錯]],然後在 [偵錯工具類型] 清單中選取 [只有 GPU] 。

啟動和附加至應用程式

您可以使用 Visual Studio 偵錯命令啟動和停止 GPU 偵錯。 如需詳細資訊,請參閱啟動、中斷、巡覽和停止 Visual Studio 偵錯工具。 只有在該處理序執行 GPU 程式碼,您也可以附加 GPU 偵錯工具附加至執行中處理序,不過,。 如需詳細資訊,請參閱HOW TO:附加至執行中處理序

執行目前 Tile 至游標和執行至游標處

當您在 GPU 上偵錯時,您會執行的兩個選項至游標位置。 兩個選項的命令可以在程式碼編輯器的捷徑功能表。

  1. [執行至游標處。] 命令執行應用程式,直到到達游標位置然後中斷。 這並不表示目前執行緒執行至游標處;相反地,表示到達游標指向的第一個執行緒觸發中斷。 如需詳細資訊,請參閱[NIB] 12/13 如何:執行至游標位置

  2. [執行目前 Tile 至游標處] 命令執行應用程式,直到所有在目前磚達到執行緒游標然後中斷。

偵錯視窗

使用某些偵錯視窗,您可以檢查,旗標和凍結 GPU 執行緒。 如需詳細資訊,請參閱:

資料同步處理的例外狀況。

偵錯工具可能會識別幾個資料同步處理的情況。 當偵測到情況,偵錯工具進入中斷模式。 您有兩個選擇 [中斷] 或 [繼續]。 使用 [例外狀況。] 對話方塊,您可以設定它會中斷為的偵錯工具是否偵測這些情況也情況。 如需詳細資訊,請參閱例外狀況處理 (偵錯)。 您也可以使用 [選項] 對話方塊中寫入的偵錯工具應該忽略例外狀況,如果資料不會變更資料的值。 如需詳細資訊,請參閱選項對話方塊、偵錯、一般

疑難排解

Hh873126.collapse_all(zh-tw,VS.110).gif指定快速鍵

中斷點在 GPU 程式碼只會叫用,如果程式碼可以在 accelerator::direct3d_ref (REF) 快速執行。 如果您不指定快速鍵在程式碼中,快速鍵 REF 自動選取為專案屬性的 [偵錯快速鍵類型] 。 如果您的程式碼明確選取一個快速鍵,則 REF 快速鍵不會使用在偵錯期間,而且中斷點不會被叫用,除非您的 GPU 硬體有偵錯支援。 您可以撰寫自己的程式碼復原此在偵錯期間,,讓它使用 REF 快速鍵。 如需詳細資訊,請參閱專案屬性和 使用 accelerator 和 accelerator_view 物件C++ 偵錯組態的專案設定

Hh873126.collapse_all(zh-tw,VS.110).gif條件式中斷點

條件式中斷點在 GPU 程式碼支援,不過,並非所有運算式裝置的頁面中評估運算式。 當運算式在裝置上無法評估,它在偵錯工具中評估。 偵錯工具比裝置可能緩慢執行。

Hh873126.collapse_all(zh-tw,VS.110).gif錯誤:與選取的偵錯快速鍵類型的組態問題。 

這個錯誤發生,就會在專案設定和電腦的組態之間不一致您偵錯。 如需詳細資訊,請參閱C++ 偵錯組態的專案設定

Hh873126.collapse_all(zh-tw,VS.110).gif錯誤:選取的偵錯快速鍵類型的偵錯驅動程式在目標電腦上未安裝。

如果您在遠端電腦上偵錯時,就會發生這個錯誤。 偵錯工具無法判斷要等到執行階段驅動程式是否安裝在遠端電腦上。 驅動程式可從圖形卡的製造商取得。

Hh873126.collapse_all(zh-tw,VS.110).gif錯誤:必須在遠端站台上停用逾時偵測和復原 (TDR)。

C++ AMP 計算可能會超過視窗逾時偵測和繼續處理序的預設時間間隔 (TDR) 設定。 當發生這種情況時,計算被取消,且資料遺失。 如需詳細資訊,請參閱 在 C++ AMP 的處理 TDRs

請參閱

工作

逐步解說:偵錯 C++ AMP 應用程式

參考

C++ 偵錯組態的專案設定

其他資源

從 Visual Studio 偵錯的 GPU