Release Build, Symbols, Debugging Unreproducable Crashes.
-
Hi all, I've done quite a bit of reading over the last few days with regards to analyzing application crash dumps etc. I've got a customer who occasionally gets an application crash that we're unable to reproduce here. The code looks fine, we have no idea whats going on. From what I'm reading, I can have the customer send me the crash dump fro Dr. Watson, then open it up to see where the FAULT is. Understood, no problems so far. As a test, I compiled the code in release, included symbols, forced a crash and was able to see where the fault was. My question more or less revolves around the SYMBOLS which tell you where the functions are located in the code, (PDB files). When you release a new version of your software, do you always BUILD these symbol files as part of the release configuration and tuck them away until you need them?? Our current process just bulids a simple RELEASE configuration with no map exports & no symbol building. Questions: 1) Do you build symbols/maps with your software during the RELEASE compile? 2) Is there any disadvantage to ALWAYS creating these files during the RELEASE compile? Is anything else included in the .EXE/DLLs which may assist in the wrong people trying to debug your application? 3) I'm assuming the version of the .exe and the .pdb have to be from the same compile, correct? Bottom line, what should I be doing as part of my RELEASE configuration to take full advantage of symbols/crash dumps etc. Sorry, I'm a little green here with this stuff... anything you can contribute would be greatly appreciated. Mke.
-
Hi all, I've done quite a bit of reading over the last few days with regards to analyzing application crash dumps etc. I've got a customer who occasionally gets an application crash that we're unable to reproduce here. The code looks fine, we have no idea whats going on. From what I'm reading, I can have the customer send me the crash dump fro Dr. Watson, then open it up to see where the FAULT is. Understood, no problems so far. As a test, I compiled the code in release, included symbols, forced a crash and was able to see where the fault was. My question more or less revolves around the SYMBOLS which tell you where the functions are located in the code, (PDB files). When you release a new version of your software, do you always BUILD these symbol files as part of the release configuration and tuck them away until you need them?? Our current process just bulids a simple RELEASE configuration with no map exports & no symbol building. Questions: 1) Do you build symbols/maps with your software during the RELEASE compile? 2) Is there any disadvantage to ALWAYS creating these files during the RELEASE compile? Is anything else included in the .EXE/DLLs which may assist in the wrong people trying to debug your application? 3) I'm assuming the version of the .exe and the .pdb have to be from the same compile, correct? Bottom line, what should I be doing as part of my RELEASE configuration to take full advantage of symbols/crash dumps etc. Sorry, I'm a little green here with this stuff... anything you can contribute would be greatly appreciated. Mke.
Mike Doner wrote:
When you release a new version of your software, do you always BUILD these symbol files as part of the release configuration and tuck them away until you need them??
Yes, I always keep the symbol files for release builds. If you've got no symbol files releasing is not an option. As to where to put them the best option is to use Microsoft's Symbol Server[^]. Note that the default settings for release builds is not to generate debug information: the first thing I do when starting a new project is change this.
Mike Doner wrote:
Is there any disadvantage to ALWAYS creating these files during the RELEASE compile? Is anything else included in the .EXE/DLLs which may assist in the wrong people trying to debug your application?
Not if you use PDB files (as then the symbols are stored separately). The only thing that's in the EXE is the full path to the PDB file on the build system.
Steve
-
Mike Doner wrote:
When you release a new version of your software, do you always BUILD these symbol files as part of the release configuration and tuck them away until you need them??
Yes, I always keep the symbol files for release builds. If you've got no symbol files releasing is not an option. As to where to put them the best option is to use Microsoft's Symbol Server[^]. Note that the default settings for release builds is not to generate debug information: the first thing I do when starting a new project is change this.
Mike Doner wrote:
Is there any disadvantage to ALWAYS creating these files during the RELEASE compile? Is anything else included in the .EXE/DLLs which may assist in the wrong people trying to debug your application?
Not if you use PDB files (as then the symbols are stored separately). The only thing that's in the EXE is the full path to the PDB file on the build system.
Steve
Stephen Hewitt wrote:
As to where to put them the best option is to use Microsoft's Symbol Server[^].
You mean I an upload my symbols to MS symbol server. Any pointer? -Saurabh
-
Stephen Hewitt wrote:
As to where to put them the best option is to use Microsoft's Symbol Server[^].
You mean I an upload my symbols to MS symbol server. Any pointer? -Saurabh
The symbol server comes with WinDBG. Google for Debugging Tools For Windows[^] and you shouldn't have any trouble finding it.
Steve
-
Stephen Hewitt wrote:
As to where to put them the best option is to use Microsoft's Symbol Server[^].
You mean I an upload my symbols to MS symbol server. Any pointer? -Saurabh
Saurabh.Garg wrote:
You mean I an upload my symbols to MS symbol server. Any pointer?
No, you don't upload them. The Symbol Server is a tool that comes with WinDBG for managing symbols and simplifying debugging by automatically locating the correct symbol files.
Steve
-
Saurabh.Garg wrote:
You mean I an upload my symbols to MS symbol server. Any pointer?
No, you don't upload them. The Symbol Server is a tool that comes with WinDBG for managing symbols and simplifying debugging by automatically locating the correct symbol files.
Steve
I am aware of symbol server and have been using it for long time. The way you said in your original post it seems that we can upload symbols to symbol server as well. -Saurabh
-
I am aware of symbol server and have been using it for long time. The way you said in your original post it seems that we can upload symbols to symbol server as well. -Saurabh
You put your symbols into a centralised symbol server when you do a release.
Steve