Release build pdb files




















Do you have any other questions about PDBs or debugging? Skip to content In my ongoing discussion of PDB files and debugging, Sa Li had a great question : Should the final release native program also generate the pdb files before being published?

How Many Secrets do. Download Whitepaper. The debugger will load only a. For more information, see Why does Visual Studio require debugger symbol files to exactly match the binary files that they were built with? For detailed information on project settings for debug configurations in C , see Project settings for a C debug configuration.

NET projects in Visual Basic, symbol files are configured the same as in. NET Framework. In the Optimize code section, choose Debug or Release. The portable format is the most recent cross-platform format for. NET Core. For more information on options, see Advanced Build Settings dialog box C. The compiler creates the symbol file s in the same folder as the executable or the main output file. For detailed information on project settings for debug configurations in C or Visual Basic, see Project settings for a C debug configuration or Project settings for a Visual Basic debug configuration.

Sign up or log in Sign up using Google. Sign up using Facebook. Sign up using Email and Password. Post as a guest Name. Email Required, but never shown. The Overflow Blog. Stack Gives Back Safety in numbers: crowdsourcing data on nefarious IP addresses. Featured on Meta. New post summary designs on greatest hits now, everywhere else eventually. Why does Visual Studio generate the. I won't be debugging a release build, so why are they generated? Because without the PDB files, it would be impossible to debug a "Release" build by anything other than address-level debugging.

Optimizations really do a number on your code, making it very difficult to find the culprit if something goes wrong say, an exception is thrown. Even setting breakpoints is extremely difficult, because lines of source code cannot be matched up one-to-one with or even in the same order as the generated assembly code.

PDB files help you and the debugger out, making post-mortem debugging significantly easier. You make the point that if your software is ready for release, you should have done all your debugging by then. While that's certainly true, there are a couple of important points to keep in mind:.

You should also test and debug your application before you release it using the "Release" build. That's because turning optimizations on they are disabled by default under the "Debug" configuration can sometimes cause subtle bugs to appear that you wouldn't otherwise catch.

When you're doing this debugging, you'll want the PDB symbols. Customers frequently report edge cases and bugs that only crop up under "ideal" conditions. These are things that are almost impossible to reproduce in the lab because they rely on some whacky configuration of that user's machine.

If they're particularly helpful customers, they'll report the exception that was thrown and provide you with a stack trace. Or they'll even let you borrow their machine to debug your software remotely. In either of those cases, you'll want the PDB files to assist you.

Profiling should always be done on "Release" builds with optimizations enabled. And once again, the PDB files come in handy, because they allow the assembly instructions being profiled to be mapped back to the source code that you actually wrote.

You can't go back and generate the PDB files after the compile. It doesn't hurt anything to create them. If you don't want to distribute them, you can simply omit them from your binaries. But if you later decide you want them, you're out of luck.

Better to always generate them and archive a copy, just in case you ever need them. If you really want to turn them off, that's always an option. In your project's Properties window, set the "Debug Info" option to "none" for any configuration you want to change. Do note, however, that the "Debug" and "Release" configurations do by default use different settings for emitting debug information.

You will want to keep this setting. The "Debug Info" option is set to "full" for a Debug build, which means that in addition to a PDB file, debugging symbol information is embedded into the assembly. You also get symbols that support cool features like edit-and-continue. In Release mode, the "pdb-only" option is selected, which, like it sounds, includes only the PDB file, without affecting the content of the assembly.

But assuming you use the "pdb-only" option, the PDB file's presence will in no way affect the run-time performance of your code. At least, usually. This works well most of the time, but the compiler is not guaranteed to generate identical binaries each time you compile the same code , so there may be subtle differences.

Worse, if you have made any upgrades to your toolchain in the meantime like applying a service pack for Visual Studio , the PDBs are even less likely to match. To guarantee the reliable generation of ex postfacto PDB files, you would need to archive not only the source code in your version-control system, but also the binaries for your entire build toolchain to ensure that you could precisely recreate the configuration of your build environment.

It goes without saying that it is much easier to simply create and archive the PDB files. PDB can be generated for Release as well as for Debug. This is set at in VS but in VS must be similar :.



0コメント

  • 1000 / 1000