Building a symbol tree when you don't have access to the internet

One of my colleagues in Israel asked me how you would go about downloading the correct symbol for a particular DLL or EXE that a customer had on their system. Normally we can just use Microsoft's public symbol server for this but in this case the system did not have internet access.

This is not an uncommon scenario and a great question. I was all set to right up a blog post about the wonders of SYMCHK.EXE that comes with the Debugging Tools for Windows package when I found this excellent blog post over on the ASKPERF site [a 'must subscribe' blog in my opinion].

In brief, on the machine without internet access you can use SYMCHK.EXE to create a manifest file describing the binaries of interest (you can specify a dump file, file on the file system or running process as the input source) and then port the manifest file to a system that does have internet access and use the manifest file as input to another run of SYMCHK that this time pulls the necessary files down from the public symbol server.