WinDbg missing symbols for managed code


I am having a problem getting WinDbg to use the PDB files for my .NET DLL files.
The hang dump I am looking at is from a production build, but I have PDB files from a debug build of the same code.

I set the symbol path to include a local folder and the Microsoft symbol server.


I put all my PDB files in C:\websymbols\foo. Yet, the managed stack listings do not contain any method names.

Doing a reload, .reload /f, tells me:

DBGHELP: No debug info for FOO.dll.  Searching for dbg file
SYMSRV:  c:\websymbols\foo\FOO.dbg\49B7F17C10000\FOO.dbg not found
SYMSRV:  c:\websymbols\FOO.dbg\49B7F17C10000\FOO.dbg not found
SYMSRV: not found
DBGHELP: .\FOO.dbg - file not found
DBGHELP: .\dll\FOO.dbg - path not found
DBGHELP: .\symbols\dll\FOO.dbg - path not found
DBGHELP: FOO.dll missing debug info.  Searching for pdb anyway
DBGHELP: Can't use symbol server for FOO.pdb - no header information available
DBGHELP: FOO.pdb - file not found
*** WARNING: Unable to verify checksum for FOO.dll
*** ERROR: Module load completed but symbols could not be loaded for FOO.dll
DBGHELP: FOO - no symbols loaded

When attaching WinDbg to the service in a test environment, managed stacks show up fine with method names. Dumping the memory, and analyzing the DMP file locally I don't see the names in the managed stacks. What might I be doing wrong?

Best Solution

You need the exact same PDB files. Debug symbols will not work with a retail dump. And you need the PDB file from exactly the same build.

Whenever you release bits into the wild, your build team should store the private PDB files for reference in case you have to stare at a dump six months later...

Related Question