如何在VS2012中生成着色器调试信息(pdb)

时间:2014-02-05 23:18:14

标签: visual-studio debugging directx shader

我正在尝试使用VS2012中的图形诊断工具在Directx 11 SDK应用程序中调试我的着色器,但是当我在图形像素历史记录中的某个着色器上单击开始调试 panel我正在 Pixel Shader.pdb未加载,我无法在任何地方找到pdb文件。

我尝试使用带有D3DX11CompileFromFile标志的D3DCOMPILE_DEBUG在运行时编译着色器,以及使用打开调试信息的HLSL编译器(/ Od / Zi)但这些选项都没有生成pdb文件我可以使用图形诊断工具。

如何生成这些文件?

1 个答案:

答案 0 :(得分:2)

我认为此"Pixel Shader.pdb not loaded"消息具有误导性。没有HLSL编译器生成的任何.pdb文件。所有调试信息都集成到二进制文件(内存blob或.cso文件)中。 您的着色器文件名为"Pixel Shader"吗?也许它不是关于着色器,而是某些Visual Studio的内部源文件(VS2012中的着色器调试器有时会有些不稳定)

可能有些想法可以帮助您解决问题:

  1. 确保您的调试和发布输出二进制文件没有搞砸。检查项目属性和每个着色器属性的调试和发布配置。
  2. 确保您正在加载正确的着色器文件。检查所有文件路径十次。
  3. 清理您的项目,手动删除所有二进制文件。再次重建。
  4. IIRC,在图形调试器中,您只能调试着色器,离线编译(即不是D3DX11CompileFromFile)。
  5. 尝试直接使用fxc.exe进行编译。
  6. 使用不包含空格和特殊字符的文件名。
  7. 确保您的测试着色器足够简单,因此调试器不会崩溃。你要使用默认模板。
  8. 如果它仍然不起作用,请编写一个最小的示例项目,检查它是否有效,在此处发布,以便我们对其进行测试。
  9. 尝试VS2013
  10. 尝试使用您的视频卡供应商的调试工具(例如NVIDIA nsight或AMD GPU PerfStudio),看看它是否与Microsoft工具有关。
  11. 希望它有所帮助。