如何在VS2012

问题描述:

产生着色器调试信息(PDB)我试图在VS2012使用图形诊断工具来调试我的着色器的DirectX 11 SDK应用程序,但是当我点击开始调试在着色器之一图形像素历史面板我得到Pixel Shader.pdb未加载我无法在任何地方找到pdb文件。如何在VS2012

我尝试使用D3DX11CompileFromFileD3DCOMPILE_DEBUG标志编译在运行时着色器,以及使用的HLSL编译器,调试信息开启(/ OD /子),但这些选择都不是生产PDB文件,我可以在图形诊断工具使用。

如何生成这些文件?

我觉得这个"Pixel Shader.pdb not loaded"的信息有误导性。没有任何由HLSL编译器生成的.pdb文件。所有调试信息都集成到二进制文件(内存块或.cso文件)。 您的着色器文件名为"Pixel Shader"?也许它说不是一个着色器,但有些类型的Visual Studio的内部源文件(VS2012着色调试器是有点不稳定,有时)

一些想法,也许可以帮助你解决问题:

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

希望它以某种方式帮助。

+0

感谢您的回答。我已经尝试了你提到的大部分内容,但没有结果。稍后我会看看Nvidia Nsight。现在我已经解决了我的问题,而这个问题原来是一个严重对齐的常量缓冲区成员。 – jaho