By now, all Q/A engineers are intimately acquainted with Microsoft’s Symbol Server, right? Well, if you’re not you should be! The use of symbol servers for accessing the symbols that match the version, service pack or hot fix of the operating system you’re testing on saves loads of time. Just think of the time you’ve spent trying to find the right symbols for the specific version of the operating system you’re running – do you have the symbols on CD/DVD? Do you have to download them? Are they stored on a network share? Here are some quick tips on using the Microsoft Symbol Server to make your life easier.
Using Microsoft’s Symbol Server technology makes getting the correct symbols a snap. To use a symbol server, you first set up what’s called a downstream store, which is any drive or share that you want to use as a symbol destination. It can be a local folder or a share that’s been set up for your engineering team. You then back this up with Microsoft’s symbol server and add the following to your symbol path:
When searching for symbols during a debugging session, the downstream store will be searched first and then the symbol server. If symbols are found on the symbol server they will be cached in the downstream store for future access. This downstream store is your "local symbol server".
But that’s not all. What about the symbols for the different versions of your driver? Let’s say you’ve released multiple versions over the years and you have customers using different releases. Why not add the symbols for your driver to the same symbol store that you’re using as a downstream store? Well, you can – and should do just that. SymStore is a tool included in the Debugging Tools for Windows package that is used to create/add to symbol stores. For example, let’s say I want to add the Windows XP checked symbols for mydriver.pdb to my symbol store:
Symstore add /f c:\appdir\lib\wxp\chk\i386\mydriver.pdb /s \\symshare\symstore /t "My Driver" /v "V2.0 for WinXP Checked"
This command will add the symbol file mydriver.pdb, located in c:\appdir\lib\wxp\chk\i386 to the symbol store \\symshare\symstore. The name of the product is "My Driver" and the version is "V2.0 for WinXP Checked".
This is a very simple example and there are many other command line options available for use with the SymStore utility, such as recursive symbol adding, use of pointers, and use of an index file. See the documentation in the MSDN Library under Windows Development/Windows Base Services/SDK Documentation/Debugging and Error Handling/Debug Help Library/About DbgHelp/Symbol Servers and Symbol Stores for more detailed information on symbol stores and using SymStore to add your own symbols to the downstream store.
Be on the lookout for Microsoft’s Source Server (Debugging Tools for Windows V6.3 or later) – which sounds like the perfect companion to the symbol server. The source server will allow for the retrieval of the exact version of source code files that were used to build the version of the driver being debugged. Seems like the next logical step in simplifying testing and debugging.