Do you have to deploy the .pdb file with compiling under release?

Do you have to deploy the .pdb file with compiling under release?

Why does it even compile a .pdb when you do a release build anyway?


No you do not need to deploy them.

As to why they are even built in release. A PDB file really has a couple of uses but the primary ones (at least for me) are

  1. Debugging
  2. Profiling

Both of these tasks are validly done on release binaries which is why release builds include a PDB. In fact, when debugging Watson dumps it's 100% of the time against a release build. Without a PDB I would have to resort to looking through dissasembly :(


You don't have to deploy and distribute the PDB files along with your binaries.

However, I suggest that you keep them (and eventually index them) to be able to analyze any dump files that clients, QA, and support people send you. This way, you will be able to have comprehensible stack traces and symbol information.


If you want, you can also turn the PDB file generation off in the compile options.


a PDB file contains information about names of functions. You need it to be able to get a stack trace. It can also contain information about mapping it to sources. Sometimes you might want to ship your release version, and still need to analyze a crash that occurs on the client side. For that, the PDB is needed. The PDB when compiling for release should in theory have less information than when compiling for debug.


PDB files contain debug symbols that allow you to debug your binary even in release mode. You don't have to (and probably shouldn't deploy them), as they might be used to reverse engineer your application. Do keep them archived somewhere, though, because they come in very handy when you want to debug a crash dump.