Working with Windows Symbols


A common stumbling block for new BugSplat users is properly uploading symbols for Windows (native and .NET). To help make this issue easier we’ve put in a way to check if symbols have been uploaded properly.

How it works:

At the top of the Crash page you will see a warning if you're missing symbols.

windows symbols missing symbols

Once the data is obtained the fields of Function, Location, Code, OS, and Explanation will be populated with all available information. If a crash is missing symbols, there will be various messages under the 'File' column in the 'Active Thread' tab indicating which symbols were missing. Make sure to upload the missing symbols (as indicated by the 'Active Thread' tab) to the symbol store for your application name and version via the Symbols page or SendPdbs.

windows symbols active thread

Additionally, you can click the 'Modules' tab to view information about all modules that were loaded on the system at crash time. In the modules table you’ll be able to view if symbols have been properly uploaded for each module by looking at the value under the 'Status' column.

windows symbols modules table

The values under the status column are as follows:

  • deferred: the debugger doesn’t need the module’s exe, dll, or pdb files to unwind the stack.
  • file not found: the debugger needs the module’s exe, dll, or pdb files to unwind the stack, but the exe/dll with matching debug signature cannot be located.
  • symbols not found: the debugger needs the module’s exe, dll, or pdb files to unwind the stack and the matching exe/dll has been located, but not the symbols.
  • pdb symbols: debugger needs the module’s exe, dll, or pdb files to unwind the stack and they have been loaded successfully.

Unfortunately, Microsoft doesn’t provide symbol information for all of the operating system modules, so “file not found” is a fairly common occurrence.

Presence of a call stack warning that reads, “Stack unwind information not available. Following frames may be wrong.” is an indication that the debugger did not have access to the files it needed.