Use the symbol server
Below you see the sad state of affairs that comes from not using the public symbol server:
This is not the callstack you want to see. With only exports loaded for ntdll.dll you are missing the whole show. What you need is the public symbol server! (Don't bother clicking on this link, use this URL in Symbol settings dialog in VS, not internet Explorer: "https://msdl.microsoft.com/download/symbols").
If you add the public symbol server, be sure to cache those symbols locally. If you don't use a cache devenv will hit the network on each module load. Below you can see the improved callstack, and the heading in the modules window that shows the public symbols are 'stripped' of source information.
From other tools that support symbol server you will need a slightly more verbose syntax as the cache and the server are specified on one line:"srv*c:\symcache*https://msdl.microsoft.com/download/symbols;"
Comments
- Anonymous
August 28, 2005
The images above all point to paths on your local machine, so that only you can see them.... - Anonymous
September 03, 2005
Not only were the images originally pointing to my local machine. When I fixed it by putting them on Flickr I put them in the wrong order! I want to thank both Mich and the kindly person I know only by email address who pointed out that I had reversed my images. - Anonymous
November 11, 2005
Thanks Steve - very useful! - Anonymous
July 20, 2006
I've been using this since VS 2005 came out. However, I have a problem. Our application (an old C++ app) uses Oracle which loads quite a few DLLs. Since there are no PDB files for the Oracle DLLs, they are not in the cache. So, VS tries to find them on the symbol server. This takes FOREVER! I've worked around the problem by turning off the use of the symbol server (still using the cached symbols). This works as long as I have all the symbols cached that I need. Is there a better workaround? Thanks!