I read through this article: Setting up a Symbol Server, which goes into details on how to set up a shared symbol server for my team.
The thing I'm wondering about is adding my own symbols into the store.
My question is this: What exactly is it that I gain from this?
Let's assume that I have the following build process:
If I add to the third point above, the ability to add the built files into the symbol store, what does that give me?
If I create a program, and reference the binaries committed to the repository, I get both .dll's, .pdb's and .xml's (intellisense support), so my stack traces already seem to contain everything I need.
Is this a replacement for distributing .pdb's?
Or is it just for when I need to open a .DMP file into WINDBG and analyze its stacks, where I presumably don't have the executable files at all, only the .DMP file provided by someone else? (that is, the exectuables are perhaps from an older version, and I was only given the .DMP file)
The symbol server is activated by including a certain text string in the symbol path. Each time the debugger needs to load symbols for a newly loaded module, it calls the symbol server to locate the appropriate symbol files. The symbol server locates the files in a symbol store.
Not to be obvious: the symbol server gives you symbols. So you can debug the minidumps you get back from your customer when your code crashes and burns. It is absolutely crucial to do post-mortem analysis on real problems that your customer is experiencing. Because by the time your several month old version of your code gets an opportunity to crash on your customer's machine, you've already progressed a couple of versions.
The real effort is not in setting up a symbol server, it is making sure it has the right pdb files to give you a good debugging opportunity. Controlling the build process is a crucial part of that equation.
If you have users who may find issues with the code but do not have access to your Subversion repository, how would you get them the symbols they need? For example, if you were developing an application for the accounting department and wanted them to try out an early version of the code, one you know might traceback on them, would you require they have a Subversion enlistmant?
A symbol server is simply a single network location where the symbols are made readily available to anyone who might need them.
There is no alternative to .pdb files if you want symbol information.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With