Arm Cortex: Mismatch between Editor and Watch Window for double-float variables

22-May-2025

When debugging a GCC Arm-based application in winIDEA, you might notice that double (double-precision floating-point) variables appear differently depending on where you're looking:

  • In the Editor, the values look correct, just like you wrote them in the code.
  • In the Watch window or VFP registers, the same variables may show incorrect or garbled values.

This happens because winIDEA is reading the variable’s memory layout incorrectly. If the debugger is set to expect one format, but your compiler used another, it will interpret the bits the wrong way. When targeting little-endian Arm architectures, the GCC compiler can store double values in two different ways, depending on how your toolchain and ABI are configured:

  • Legacy libraries use a swapped format (FPA)
  • Modern toolchains use the Straight (VFP) format



Solution

Set the correct double format in Advanced Symbol File settings:

1. Go to Debug | Configure Session | Application | Symbol Files| Edit | Advanced.

2. Select GCC ARM double format Straight (VFP).


More resources in winIDEA Help

Was this answer helpful?