Tijs van Bakel wrote:
"Debuggers can determine whether an executable file or DLL contains debugging information by searching for the IMAGE_FILE_DEBUG_STRIPPED characteristic. If this characteristic is present, the debugging information exists in a symbol file."
This remark is a bit ambiguous. Does it say that if the characteristic is _not_ present, then "the debugging information exists, but not in a symbol file" ?
Not quite; if the characteristic is not present, *either* the debugging information exists embedded into the PE file itself, *or* there is no debugging information at all.
However, note that 'symbol file' does not refer to PDB files, but to DBG files containing stripped PE debug sections.
When PDB files are involved, the PE debug section contains only a reference to the PDB, so it does not make much sense to strip it to a separate DBG file (and it therefore usually isn't done).
Any ideas on where to find documentation?
Microsoft does not document the PDB file format publicly as far as I know. I am not aware of any other publicly available documentation that is more comprehensive than the winedbg sources. (There is a short section in Sven Schreiber's "Undocumented Windows 2000 Secrets", but this won't tell you anything that wasn't already in winedbg since before that book came out.)
Of course, certain *parts* of the information inside the PDB (like the actual symbol and type information records) do follow the documented CodeView format.
Where does the knowledge for the old PDB parser come from?
From looking at various PDB files ...
I could ask the above question for many more parts of Wine. There is a lot of code in Wine based on "undocumented" Windows features. Is there a list of sources for information on Windows internals (both books and websites)?
Not that I'm aware of; there of course the Pietrek books and others, and there are various websites with bits and pieces of undocumented Windows features. I don't think there's a comprehensive list, though.
Bye, Ulrich