共用方式為


HLSL 偵錯

HLSL 偵錯工具是 Visual Studio的其中一個圖形診斷工具,可協助您了解在圖形診斷擷取工作階段期間,HLSL 著色器程式碼與記錄的圖形資料運作的方式。

這是 HLSL 偵錯工具:

使用監看式和呼叫堆疊視窗偵錯 HLSL。

了解 HLSL 偵錯工具

HLSL 偵錯工具可以協助您了解出現在呈現程式碼的問題。在 Visual Studio 中偵錯 HLSL 程式碼類似於偵錯以其他語言 (例如、C++、C# 或 Visual Basic) 撰寫的程式碼。您可以檢查變數內容、設定中斷點、逐步執行程式碼,以及向上查核呼叫堆疊,就像偵錯其他語言時可以執行的功能一樣。

不過,由於 CPU 硬體和軟體 (應用程式程式碼) 與 GPU 硬體和軟體 (著色器程式碼) 很不一樣,除非 GPU 偵錯工具會以完全不同的方式運作,否則類似 CPU 的偵錯經驗無法在 GPU 上使用。GPU 和 CPU 運作種類之間的基本差異是 GPU 會將工作分散在用來最佳化圖形作業且相當慢又簡單的處理器上執行,以便能處理相當龐大的資料集,但 CPU 使用少數且相當快又複雜的處理器來處理較小且一般用途的工作量。此外,由於 GPU 基本上是管理其自身內部運作的獨立電腦,只是經常與 CPU 共用資訊而已,因此執行於 CPU 的偵錯工具在任何特定時刻都很難了解 GPU 發生什麼狀況。即使 CPU 可保持運作,GPU 程式碼就是使用了太多執行緒並產生太多資料,讓開發人員無法篩選。

為解決這些困難,HLSL 偵錯工具會使用在圖形記錄檔中記錄的資訊重建擷取到的框架,而不是嘗試在 GPU 執行著色器程式碼時即時監控該 GPU。由於圖形記錄包含足以重新建立輸出之任何部分的資訊,而且圖形診斷會提供可協助您找出發生錯誤之確切像素與事件的工具,因此 HLSL 偵錯工具只需要模擬您所要的實際著色器執行緒。這表示可在 CPU 模擬著色器的工作,其中內部工作處於完整檢視。這可以賦予 HLSL 偵錯工具類似 CPU 的偵錯經驗。

不過,目前會以下列方式限制 HLSL 偵錯工具:

  • HLSL 偵錯工具不支援編輯後繼續。

  • 同時偵錯應用程式和其著色器程式碼是不可能的。不過,您可以在它們之間選擇。

  • 您可以將變數和暫存器加入至監看式視窗,不過不支援運算式。

  • 不支援計算著色器。

不過,HLSL 偵錯工具提供比原本可能更接近 CPU 樣式的較佳偵錯經驗。

請參閱

工作

逐步解說:因端點著色而遺漏的物件

逐步解說:偵錯因著色而產生的顯示錯誤