Debug symbol

From Wikipedia, the free encyclopedia

Debug symbols is the information on what high-level programming language constructions generated specific piece of machine code in the given executable module. Sometimes it's compiled into the module's binary, or distributed in separate file, or just discarded during the compilation and/or linking. They enable a person using a debugger to gain additional information about the binary, such as the names of variables and routines from the original source code. This information is sometimes extremely helpful while trying to investigate and fix a crashing application.

Sometimes the debug symbols are embedded in the binary itself, which can then grow significantly (several megabytes larger). To avoid this extra size, modern compilers store the debug symbol information in a separate file (for Microsoft compilers, this file is called a PDB file). Some companies ship the PDB on their CD/DVD to enable troubleshooting and other companies (like Microsoft) have special online servers from which it's possible to download the debug symbols separately. When you are using Microsoft's WinDBG debugger it will automatically download debug symbols for Windows DLLs on demand as they are needed. However, the PDB debug symbols that Microsoft distributes are just partial (they include only public functions, global variables and their data types). Other vendors, such as the Mozilla Corporation has similar infrastructure but their symbol server distributes full debug information making it easier to find bugs because this data contains all functions, all variables and all data types.

In 2008, Microsoft also started to offer the source code for certain components (most of the .NET Framework for instance) to make debugging easier and some debuggers, like WinDbg and Microsoft Visual Studio, will actually download the code on demand in a fashion similar to how debug symbols are retrieved (there is a special source server that serves the requested code). Mozilla has operated such a source server for several years before that.