Reputation: 12247
When I provide a symbol path in simple demo application, it works fine but in real application it doesn't the pdb! I add path in both cased the same way (actual paths are obviously different):
.sympath+ c:\test\demoPdb
The reason it may work in demo is because I do 'Open Executable'. In case of my real application, I am opening a crash dump file. But should that really make any difference?
I have made sure I have provided the image file path and the symbols path but the verbose output shows no sign it is looking for the pdb file in that provided folder or caching it.
For example in case of demo, there is the following line which indicates the file cached (so it was read).
DBGHELP: c:\test\app\pdb\App.pdb cached to C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\FF12D89B77D742CAB1CB145EC85C2ABD1\App.pdb
But similar line is just not there in verbose output of the real application and I did windows search on it. Is there any reason you can think of why it may not be looking in that folder?
Please note I don't have the exact pdb files and I am expected to see 'mismatched pdb' message but I am not getting that.
Also I did went through this, I don't have access to the actual build machine but I would like it to at least search the file in the path I have given.
Update The output of .symapth is:
0:000> .sympath+ C:\Test\56RC\Release
DBGHELP: Symbol Search Path: cache*;SRV*https://msdl.microsoft.com/download/symbols;c:\test\56rc\release
DBGHELP: Symbol Search Path: cache*;SRV*https://msdl.microsoft.com/download/symbols;c:\test\56rc\release
Symbol search path is: srv*;C:\Test\56RC\Release
Expanded Symbol search path is: cache*;SRV*https://msdl.microsoft.com/download/symbols;c:\test\56rc\release
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred srv*
OK C:\Test\56RC\Release
Upvotes: 2
Views: 2475
Reputation: 59564
As far as I can tell, WinDbg will search in the paths provided. (Actually, it's not WinDbg but WinDbg delegates the work to DbgHelp, but for the reasons of simplicity, I'll call it WinDbg in the following)
However, I see and I can reproduce the issues that you're having, as there are
.sympath
, .exepath
, .srcpath
) but also in other directories, e.g. the path to the PDB that is stored in the debug directory of the executable itself (see this answer for details on the debug directory).!sym noisy
WinDbg does not output all the paths in which it searches. That's unfortunate, but only Microsoft could change that, so we have to live with it. In doubt, use Process Monitor with a .pdb
filter to really find out where WinDbg is trying to access symbolssrv*
, symsrv*
, cache*
and sorts) or the load order of symbols (in subfolders like dll
, symbols
, symbols\dll
).So yes, you're having a hard time, but looking at the question history, you have learned a lot and you're getting used to it, like I did and several others managed to deal with it.
Upvotes: 1