This symbol information is not stored in the module itself, because it takes up a lot of space.
[citation needed] When a program is debugged, the debugger loads debugging information from the PDB file and uses it to locate symbols or relate current execution state of a program source code.
Debug information specific to each source is stored in the compiled object file, and contains references to types in the PDB.
The Microsoft linker, under appropriate options, builds a complete new PDB which combines the debug information found in its input modules, the types referenced by those modules, and other information generated by the linker.
It is designed to optimize the process of making changes to the PDB, as performed by compiles and incremental links.
The PDB is organized in fixed-size pages, typically 1K, 2K, or 4K, numbered consecutively starting at 0.
Each stream in the PDB occupies several pages, which aren't necessarily consecutively numbered.
Remainder of the header consists of: Signature is "Microsoft C/C++ MSF 7.00\r\n\x1ADS\0\0\0"(32 bytes).