Debug Optimized Code
Problems that only surface during
optimization are often an indication of logic errors that are
exposed by optimization, for example using a variable that has
not been initialized. If you encounter an error in your program
that only occurs in the optimized version, you can usually find
the cause of the error using a binary search technique to find
the failing module:
- Begin by optimizing half the modules and see if the error
persists.
- After each change in the number of optimized modules, if
the error persists, optimize fewer modules; if the error
goes away, optimize more modules. Eventually you will
have narrowed the error down to a single module or a
small number of modules.
- Debug the failing module. If possible, turn off the
instruction scheduling optimizations for that module.
Look for problems such as reading from a variable before
it has been written to, and pointers or array indices
exceeding the bounds of storage allocated for the pointer
or array.

Notes on Debugging Optimized
Code