Debug information and high optimization

Technical Note 62015






11/6/2015 2:27 PM


This Technical Note discusses which information in C-SPY that is reliable (and which is unreliable) at optimization level 'high'.


The optimization system in IAR C /C++ Compiler consists of different parts that aim to make as small and/or fast output as possible. When these parts are enabled, the debug information that the compiler generates become less and less reliable.

Reliable information...

...comes from C-SPY windows that shows information collected from the target system. For example the following windows:

  • Disassembly window 
  • Memory window
  • Register window
  • Stack window
  • Call Stack window

Reliable (most of the time) information

These windows are reliable most of the time, but any write might have been moved due to optimzations. That is, a write of a value might not have been done yet. This applies to for example the following windows:

  • Statics window
  • Symbolic Memory window
  • Symbols window

Unreliable information

C-SPY windows that shows information based on debug information becomes unreliable. For example the follwoing windows:

  • Watch window
  • Locals window
  • Auto window
  • Live Watch windows
  • Quick Watch window

More information

More information can be found in Help > C-SPY Debugging Guide, chapter "Effects of optimizations" and also Help > C/C++ Development Guide, chapter "Optimization Levels".


All product names are trademarks or registered trademarks of their respective owners.


We do no longer support Internet Explorer. To get the best experience of, we recommend upgrading to a modern browser such as Chrome or Edge.