Force WinDbg to load pdb using `.reload` is not working

3

I have a dump collected for my executable App.exe: App.DMP

Unfortunately, we didn't save the .pdb for this specific build, but since we have build number we could rebuild the same version and reconstruct the .pdb

This didn't help and I couldn't load the symbols with Visual Studio.

So I tried to open the dump with WinDbg and force loading the should-match symbols, following these instructions:

0:000> !sym –noisy
0:000> .reload /f /i C:\Tests\dump-e\App.exe
SYMSRV:  BYINDEX: 0x34
         C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym
         App.pdb
         CEE75F0AAD5348458938777BBD4165B01
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pdb - path not found
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pd_ - path not found
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\file.ptr - path not found
SYMSRV:  RESULT: 0x80070003
SYMSRV:  BYINDEX: 0x35
         https://msdl.microsoft.com/download/symbols
         App.pdb
         CEE75F0AAD5348458938777BBD4165B01
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pdb - path not found
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pd_ - path not found
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\file.ptr - path not found
SYMSRV:  HTTPGET: /download/symbols/App.pdb/CEE75F0AAD5348458938777BBD4165B01/App.pdb
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/App.pdb/CEE75F0AAD5348458938777BBD4165B01/App.pd_

SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/App.pdb/CEE75F0AAD5348458938777BBD4165B01/file.ptr
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  RESULT: 0x80190194
SYMSRV:  BYINDEX: 0x36
         c:\tests\dump
         App.pdb
         CEE75F0AAD5348458938777BBD4165B01
SYMSRV:  UNC: c:\tests\dump\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pdb - path not found
SYMSRV:  UNC: c:\tests\dump\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pd_ - path not found
SYMSRV:  UNC: c:\tests\dump\App.pdb\CEE75F0AAD5348458938777BBD4165B01\file.ptr - path not found
SYMSRV:  RESULT: 0x80070003
DBGHELP: Failed copying the file 'D:\Agt\Def\04\_w\36\s\App\x64\Release\App.pdb' to the cache
DBGHELP: D:\Agt\Def\04\_w\36\s\App\x64\Release\App.pdb - file not found
*** WARNING: Unable to verify checksum for App.exe
*** ERROR: Module load completed but symbols could not be loaded for App.exe
DBGHELP: App - no symbols loaded

Why isn't the force loading working? what is it with D: drive? I don't have such drive.. is it related to this GUID (CEE75F0AAD5348458938777BBD4165B01) not matching my dump? shouldn't the force cover this?

c++
windbg
dump
pdb
dmp
asked on Stack Overflow Feb 6, 2018 by Mugen

1 Answer

3

The symbols and image file all have compile-time checksums, so rebuilding the same build does not produce a "compatible" PDB to debug the system.

Using the force with the new re-built image may produce a similar enough build for diagnosis of the crash to work. But optimizations such as Whole-program-optimization, incremental linking and profile-guided-optimizations may produce marginal differences in the symbols.

Use .symopt SYMOPT_LOAD_ANYTHING and put the newly built pdb and binary at the start of the search path.

The location checked by windgb is a) the link output directory, b) paths on the symbol path.

This means that when you build a binary and debug it on the same machine, it usually finds the correct value. The D: is your build server's build directory.

answered on Stack Overflow Feb 6, 2018 by mksteve

User contributions licensed under CC BY-SA 3.0