Symbols for Windows debugging
Symbol files hold a variety of data which are not actually needed when running the binaries, but which could be very useful in the debugging process.
Symbols can include the name, type (if applicable), the address or register where it is stored, and any parent or child symbols. Examples of symbols include variable names (local and global), functions, and any entry point into a module.
The debugger gets its information about symbols from symbol files, which are located on the local file system or loaded from a remote symbol server. When using a symbol server, the debugger will automatically use the correct version of the symbol file to match the module in the target.
Symbols for the Windows debuggers (WinDbg, KD, CDB, and NTSD) are available from a public symbol server via the internet.
Symbols can be loaded automatically using the .symfix (Set Symbol Store Path) command, as long as you have access to the internet while your debugger is running. Then use the .reload (Reload Module) command to load the symbols.
If you are performing user-mode debugging, you will need symbols for your target application. If you are performing kernel-mode debugging, you will need symbols for the driver you are debugging, as well as the Windows public symbols.
These topics explain how to access symbols during a debugging session, how to control the debugger's symbol options and symbol matching.
These topics explain what symbols are, as well as describe WinDbg support for Portable PDB symbols.
For additional detail on working with symbols refer to these pages.
If you simply want to configure your debugger to access symbols for your own programs and for Windows, you may find it quicker to read the less-detailed introductory topics Symbol Path and Microsoft public symbol server. Use the Use !sym noisy command to display additional detail as symbols are loaded to troubleshoot issues with symbols.