Search code examples
debuggingwindbgsymbolsdebug-symbols

Symbols not being loaded in Windbg


I downloaded the x86 symbols from Microsoft (and installed it) - I then added the sympath of

.symfix C:\Temp\Symbols\X86

I then do a check on this: - why is it adding a URL when I did not specify?

1: kd> .sympath 
Symbol search path is: srv* 
Expanded Symbol search path is: SRV*C:\Temp\Symbols\X86*http://msdl.microsoft.com/download/symbols

This is where my symbols are - however when I open a crash dump I am still getting error not symbols found.

The problem is I do not have internet access on my machine so I do not want it to go out and search for symbols when it cannot.

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntkrpamp.exe - 
Loading Kernel Symbols
...............................................................
................................................................
..
Loading User Symbols
PEB is paged out (Peb.Ldr = 7ffd900c).  Type ".hh dbgerr001" for details
Loading unloaded module list
.....................................

************* Symbol Loading Error Summary **************
Module name            Error
ntkrpamp               The system cannot find the file specified

You can troubleshoot most symbol related issues by turning on symbol loading diagnostics (!sym noisy) and repeating the command that caused symbols to be loaded.
You should also verify that your symbol search path (.sympath) is correct.

Solution

  • The .symfix command always inserts the Microsoft public symbol store into your path; that's why it's called "fix". From the documentation:

    The .symfix command automatically sets the symbol path to point to the Microsoft symbol store.

    Your command was setting the symbol path to use the Microsoft server and then cache any symbols it pulled from it into C:\Temp\Symbols\X86.

    Instead, you just need to set the symbol path explicitly to be where you downloaded the symbols:

    .sympath C:\Temp\Symbols\X86
    

    Then reload symbols with .reload /f /d /v and look for any that could not be loaded. Successfully loaded modules will look like this:

    AddImage: C:\Windows\system32\OLEAUT32.dll
     DllBase  = 000007fe`ff2d0000
     Size     = 000d7000
     Checksum = 000e0140
     TimeDateStamp = 4e587ee8
    

    While libraries missing symbol files will appear like this:

    AddImage: C:\Windows\system32\OLEAUT32.dll
     DllBase  = 000007fe`ff2d0000
     Size     = 000d7000
     Checksum = 000e0140
     TimeDateStamp = 4e587ee8
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Windows\system32\OLEAUT32.dll - 
    

    I'd encourage you to read more about symbol path syntax as it can be difficult to understand at first.