the latest version of the debugging enigne (DbgEng.dll)
can load symbols from almost anyplace,
including the public symbols server from Microsoft.
It's better if you keep the PDB out of the binaries,
but generate the entry in the PE header to contain
the name and the "signature" of the PDB file
(otherwise you will soon understand the meaning of the "unmathced PDB" error
message,
that you can diagnose with `!sym noisy'
before doing a `.reload /f' after
having set `.sympath you_path_to_symbols' ).
The dubugger can leverage the information in the PDB files
to help the human to understand what the code does,
but all the debugger does is to process the Debug Events from the OS,
implement the basic commands (read memory, write memory, trace and step).
With symbols you can type
0:001>g ntdll!RtlAllocateHeap
instead of
0:001>g 0x7f45612c
that is powerful, but it's really the same thing once the debugger knows
how to translate a string into an address in the given context.
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm