Where I can find such information? I've already read the undocumented windows 2000 secrets explanation of it but it isn't complete. For example the 3rd stream format isn't explained. I have looked at this, where some general info about the streams is given but nothing more.
You can find some information about PDB on the blog of PDBParse's author:
This article is a good resource about PDB :
Other link on the subject :
I hope you will find your happiness in these links ;)
Here is something directly from Microsoft.
Since the format is internal to Microsoft you likely won't find any official documentation. The best bet is various reverse engineering efforts on the format:
- PDB Parser (the one you found)
- PDBparse (in Python)
- Wine project has a partial implementation of dbghelp.dll, including PDB parsing.
P.S. I just remembered that there is an open-source Microsoft project called "CCI Metadata" which does provide some C# code for reading and writing PDB files. Not sure about the legality of using it to make your own PDB parser, but it does provide information which is probably as the close to official docs as you can get.
This is what I've found:
- Exploring Symbol Type Information with PdbXtract - from Mendiat.
PdbXtract is not a pure PDB parser. It only extracts type information using Microsoft’s DebugInterface Access (DIA) COM. If you are interested in just parsing/dumping raw PDB information, there are a few alternatives out there to DIA, including Volatility’s open source pdbparse (http://code.google.com/p/pdbparse/) or the PDB utility that comes with the Undocumented Windows 2000 Secrets book. However, most of the practical tools I have seen that operate on PDB’s use DIA, including Microsoft’s own Dia2dump, this one http://www.codeproject.com/Articles/37456/How-To-Inspect-the-Content-of-a-Program-Database-P and this one http://www.ishani.org/web/articles/obsolete/pdb-cracking-tool/, to name a few. To reiterate, PdbXtract does not parse or capture the wealth of other information available in a PDB, including: functions, debug streams, modules, publics, globals, files, section information, injected sources, source files, OEM specific types, compilands, and others.
- Help me to read .pdb file - from stackoverflow