You may have to create symbols that you can use when you
debug dump files or when you perform live debugging by using the Microsoft Debugging Tools
for Windows. To download these tools, visit the following Microsoft Web site:
are data that let the debugger know about source and line information,
variables that are used in your application, and data type information for your program.
This article describes how to create symbol files, specifically .pdb
files, when you build a release version of your Visual C++ applications. When
you work with Microsoft Product Support Services, you may be asked to provide
these files to help the Support Professional who is assisting you to determine
the cause of a problem that you are experiencing. For this reason, it is a good
practice to build symbol files with each specific released version of your
This article assumes that you are familiar with
building applications by using Microsoft Visual C++. See the Visual
C++ documentation for definitive details about how to create symbol
There are two types of builds: release and debug. Always set the build
type to release
for builds that are shipped to customers. The debug
build is frequently used during the development phase of the
application. Both types of builds can be debugged, and both types of builds must have
symbols to debug them. One important difference is that the release
setting in Visual C++ turns on compiler optimization and the debug
setting turns compiler optimization off. When compiler optimization is turned on, the
application runs faster. However, it is not as easy to step through the code
because the source code lines are not compiled in the exact order that they
appear in the source code. Therefore, during the development phase of a project, it
is easier to debug a debug
In both the Visual C++ 6.0 and the Visual C++ .NET
development environments, you can create a debug build by selecting debug
as the build type, and you can create a release build by selecting release
as the build type. If you are not using the Visual C++
development environments, you must know what compiler and linker options
To enable debugging of a release build for Visual C++
.NET or for Visual C++ 6.0, change the following compiler options on the Cl.exe
compile of your build:
- Enable /Z7 for Visual C++ .NET
- Enable /Zi for Visual C++ 6.0
- Enable /O2
For additional information about the Compiler option, visit the following Microsoft Developer Network (MSDN) Web site:
- Select /DEBUG:Yes
- Select /OPT:REF
- Select /OPT:ICF
For additional information about the Linker option, visit the following MSDN Web site:
Enable Debugging in a Release Build in Visual C++ 6.0
To enable debugging in a release build in a Visual C++ 6.0 development environment, follow these steps:
- On the Project menu, click Settings.
- Click Win32 Release configuration.
- On the C/C++ tab, click General, and then set the following:
- Set Optimizations to Maximize Speed or to Minimize Size.
- Set Debug Info to Program Database.
- On the Link tab, click General, and then set the following:
- Make sure that you click to select Generate debug info.
- Make sure that you clear the Link incrementally check box.
- Edit the Project options directly, and then add /opt:ref,icf.
You can now debug your release build application. To find the
problem, step through the code until you find where the failure occurs, and
then determine the incorrect parameters or code. If a program works in a debug
build, but fails in a release build, it is likely that one of the compiler
optimizations is exposing a defect in your source code.
To create a
debug build, use the following options:
After you have completed the steps, and you recompile the
application, you will have .pdb files in either the \Debug or the \Release directory
of your project, depending on your build configuration.
For additional information, see the following book:
Robbins, John. Debugging Applications
. Microsoft Press.