I'm trying to use windbg more, and I keep having problems with the symbol cache. It isn't clear to me what the format of the string is supposed to be.
I have a few requirements:
- use Microsoft's server http://msdl.microsoft.com/download/symbols
- use symbols from our software that are archived at
\\\foo\Build1234
- use a local cache at
c:\dev\symbols
The archive of symbols from our distributed build at \\\foo\Build1234
are not organized as a symbol server. If I understand it correctly, I need to use the cache keyword.
Given these requirements, does this look like a properly formatted srvpath:
cache*\\foo\Build1234;srv*c:\dev\symbols*http://msdl.microsoft.com/download/symbols
Edit:
I just started reading Advanced Windows Debugging and I had misinterpreted how the cache keyword works. I thought it was a way of telling the debugger that the folder is just a folder of files and not a symbol server. After Michael left his comment, I reread the section and see that it indeed works as Michael described.
Now I'm confused by when you use a ;
or a *
to separate paths/URLs. And when you need the srv*
prefix. In the online help for windbg they give this example:
\\someshare\that\cachestar\ignores;srv*c:\mysymbols*http://msdl.microsoft.com/download/symbols;cache*c:\mysymbols;\\anothershare\that\gets\cached
The symbols from \\\someshare
are not cached, symbols from Microsoft are cached in c:\mysymbols
, and c:\mysymbols
is used as the cache for any other paths to the right of the cache*
directive.
The occasional use of srv*
is confusing me -- I don't understand why the first and last paths aren't prefixed with srv*
.
Edit 2:
This is slowly starting to make sense to me. The srv
directive is used for symbol servers, and not for normal symbol directories. So, I believe the answer to my original question is this:
\\foo\Build1234;cache*c:\dev\symbols;srv*http://msdl.microsoft.com/download/symbols