What does "pdb is obsolete" really mean?
If your Visual Studio debugger says this to you, it either means
- Your PDB really is obsolete
- Your debugger is obsolete
1. It gets expensive in terms of testing and (sometimes) development to read every single old PDB format, so with each release the C++ team determine what is the oldest PDB they can read is. 8.0 will read PDBs created with 5.0, but I don't believe it can read a 4.0 PDB any more.
2. A common case for this is a PDB created with 8.0, then read with Visual Studio 7.1 or earlier. There was a lack of forethought on error codes, so there was one error that mean basically "huh? can't read this".
How do you tell the version of a PDB you may ask? Believe it or not you TYPE the pdb itself: if it says
Microsoft C/C++ MSF 7.00
then it is 7.0 or newer. If it says something else, then it is older than that. Unfortunately I am not aware of any public tools that will tell you the version with greater granularity.