HLSL 调试器是 Visual Studio 中的图形诊断工具之一,可以帮助您了解在图像诊断捕获会议期间,您的 HLSL 着色器代码如何与记录的图形数据一起运行。
这是 HLSL 调试器:
.png)
了解 HLSL“调试器”
HLSL 调试器可以帮助您了解您着色器代码中产生的问题。在 Visual Studio 调试 HLSL 代码类似于调试以其他语言编写的代码,例如,C++、C# 或 Visual Basic。您可以检查变量的内容,设置断点,通过代码分步执行,并且遍历调用堆栈,就象您调试其他语言时您可以做的一样。
但是,因为 CPU 硬件和软件(应用程序代码)与 GPU 硬件和软件(着色器代码)差别很大,应用于 CPU 软硬件上的调试经验不适于 GPU,除非 GPU 调试器以完全不同的方式工作。GPU 和 CPU 执行操作的工作类型之间的根本区别是 GPU 将工作相对缓慢地传播,简单处理器优化图形操作处理非常大的数据集,但 CPU 使用相对较快的几种,复杂处理器可以处理更小和通用的工作负载。此外,因为 GPU 实质上是管理自己内部工作和仅与 CPU 偶尔共享信息的一个独立计算机,在 CPU 运行调试器来了解 GPU 在任何给定时间发生了什么是很困难的。即使 CPU 可能追赶,GPU 代码使用太多的线程并为开发人员生成太多的数据而不能通过筛选。
若要解决这些困难,HLSL 调试器通过使用图形日志记录的信息重新创建捕获帧,而不是在其运行驻澳舍弃代码时尝试实时监视 GPU。由于图像记录包含足够的信息重新创建输出的任何部分,并且,由于图像诊断提供了可帮助您查明确切的像素和事件发生错误的工具,HLSL 调试器只模拟您感兴趣的确切着色器线程。这意味着着色器的工作可在其内部工作一览无余的 CPU 上模拟。这就是向 HLSL 调试器提供的与 CPU 类似的调试体验。
但是,当前以以下方式对 HLSL 调试器进行限定:
HLSL 调试器不支持“编辑并继续”。
它不可能在同一时间调试应用程序和着色器代码。但是,您可以交替显示这两者。
可以将变量和寄存器添加到“监视”窗口,但是,不支持表达式。
计算着色器不受支持。
但是,HLSL 调试器所提供的调试体验要比可能的更好且更像 CPU。