GSoC 2012 project idea: PDB format support.

Hello clang list!

I would like to implement support of VIsual Studio debug info format (*.pdb) as part of Google SoC 2012.
Is it suitable for Clang? Is there someone who want to mentor for this project?

Svyatoslav Kuzmich

It certainly sounds interesting and worthwhile, but it would be a pretty huge project - I don't think you could expect to complete it in the 10 weeks of the GSoC. Have you looked at the complexity of the existing debug info stuff in LLVM (this is more of an LLVM project than a clang one, since clang would emit the same debug info to the IR, it would just be translated differently into the final output) and do you have documentation for the pdb format? For it to be a good project for the GSoC, you'd need to split it into a series of smaller steps and indicate how long you thought each one would take.

Please don't take this as discouragement - better Windows support is definitely something that we'd like to see, and being able to use Clang and the Visual Studio debugger would make a lot of people I know happy...


The PDB file format is historically undocumented. We’ve been trying to get a copy of the spec for years, and have even held several calls with MSFT compiler teams and they’ve been unwilling to provide documentation. I’m thinking this alone is a blocker to complete any forward progress on this effort.

The DIA SDK does provide PDB reading capabilities, but no emission. While I agree that it would be extraordinarily cool to have, unless you want to reverse engineer the proprietary format, I’m afraid it’s a dead-end.


Joe Abbey
Director of S/W Development
Arxan Technologies, Inc.
1305 Cumberland Ave, Ste 215
West Lafayette, IN 47906

It looks like the format is pretty well described at


AFAIK Wine’s implementation of dbghelp.dll includes code for reading PDB files.


Thank you for suggestions. I also found book: Undocumented windows 2000 secrets. Its outdated but contains some information about PDB structure. It also has an open-source PDB explorer (probably outdated too). Unfortunately I have no official documentation.

I agree project is too big for one student. That’s why I’d like to propose only a part. Maybe there is a student who want to cooperate? It would be nice to divide the project into parts and do it together.

A more recent PDB parser is here:

Wow, I stand corrected... Thanks Sandeep!


Does that have documentation? It looked to me like it was just source for managed code wrappers for dbghelp.dll