6.6 Optimization and debugging
With GCC it is possible to use optimization in combination with the
debugging option -g
. Many other compilers do not allow this.
When using debugging and optimization together, the internal
rearrangements carried out by the optimizer can make it difficult to see
what is going on when examining an optimized program in the debugger.
For example, temporary variables are often eliminated, and the ordering
of statements may be changed.
However, when a program crashes unexpectedly, any debugging information
is better than none--so the use of -g
is recommended for
optimized programs, both for development and deployment. The debugging
option -g
is enabled by default for releases of GNU packages,
together with the optimization option -O2
.