The program database (.pdb) file is used by your integrated development environment (IDE; like Visual Studio) to maintain the state of your project (it remembers your formatting, where you placed everything, and info from the compiler).
PDBs are separate files, needed for debugging to work. They are created automatically in the project's directory or subdirectory, with the same name as the executable, but with the .pdb extension instead. If PDB files are misplaced or aren't properly moved and tracked with your other files, then they must be found for debugging to work properly.
The files hold debugging and project state information. The PDB files enable incremental linking of your program's debugging configuration.
The PDB file is made during the compilation process, even though the final executable isn't even named. You see, the PDB file is often made as a temp file and then merged into the .pdb file later. Some languages, like VC#, require you to use a linker to merge the temporary PDB file into the main one. Of course, it's always recommended to do that, so that you can see the stack trace, source files, line numbers, etc.
Thanks! Please reply in the comments with questions or suggestions on how to better explain PDB files!
- User Ed