microsoft / microsoft/DirectXShaderCompiler

DXC linker debug output isn't a valid PDB (and doesn't work with PIX)

Open
#5,739 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug debug info shader-linking
Dominant language
C++
Stars
3.7k
Forks
900
Avg merge
2d 11h
Merged PRs (30d)
44

Description

Description
Linking a shader with -Fd will dump the raw ILDB part from the DXIL container instead of a valid PDB file.

Steps to Reproduce
Create a file named test.hlsl:

RWTexture2D<uint> rwTexResource[] : register(u0, space2400);
[numthreads(8, 8, 1)]
void main(uint3 dtid : SV_DispatchThreadID, uint3 gtid : SV_GroupThreadID, uint3 gid : SV_GroupID, uint gindex : SV_GroupIndex)
{
    rwTexResource[0][dtid.xy] = texResource.Load(dtid.xyz);
}

Run these commands:

dxc.exe -T lib_6_3 -Zi -Qstrip_reflect -Qembed_debug -Fd testc.pdb -Fo test.lib test.hlsl
dxc.exe -link -T lib_6_3 -Zi -Qstrip_reflect -Fd test.pdb -Fo test.bin test.lib

Actual Behavior
testc.pdb (the compiler output) has a valid PDB header.
test.pdb does not.

"PDBs" output this way will also not load in PIX.

Environment

  • DXC version dxcompiler.dll: 1.7 - 1.7.2207.3 (e9137cd1d); dxil.dll: 1.7(101.7.2207.10)
  • Host Operating System Windows 10

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with test.hlsl and the two dxc.exe commands from the report, then compare the compiler-generated testc.pdb with the linker-generated test.pdb. Investigate the DXC linker path that emits debug output and verify that the resulting file has a valid PDB header and loads in PIX.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.