Search code examples
windowsdebug-symbols

How operate and update a symbol server for Microsoft Windows on a closed network?


Background

When working on a closed network (i.e. no internet connection), Microsoft's public symbol server isn't available during my debugging sessions. I'm most interested in the debug symbols for the Windows system libraries and the C-runtime libraries (e.g. kernel32.dll, mscvrt100.dll).

I've created a debug symbol server on the closed network and "seeded" it with the debug symbol packages from here. The problem is that as Windows updates, some binaries need to get updated symbols. I don't know of any place where these are "neatly" bundled for download. The only option I'm aware of is to use symchk to download symbols for everything in the Windows/system32 directory on the machine that will be used for debugging which is tedious and time consuming.

Question

How do you operate and update a symbol server for Microsoft Windows on a closed network? Is there any way to "mirror" say, all of the Windows debug symbols such that you get the symbols for not just the releases and service packs but also the hotfixes and rollups?


Solution

  • Another option to populate your 'closed network symbol' store is to use symchk this way :

    • go on the target machine (the one you want the symbols). Install windbg and run the command symchk /r c:\windows\*.dll /om c:\symbols.txt

    • on a machine connected to the internet, retreive the symbols.txt file generated and use the same symchk : symchk /im c:\temp\symbols.txt

    In the first step, symchk will generate a text file with the signatures of the binaries of the target machine. In the second step, this list is read and symchk actually retreives the pdb files from the Microsoft Symbol Server.