It looks like you're debugging an optimized build.
The debugger "knows" the meaning of your local variables, since the symbol file describes their location in the frame of the function stack.
The debugger can then read the variables from the memory of the target process. However, this requires the stack frame to contain updated copies of local variables. When compiling without optimization, the generated code will always write local variables back to their location in the stack frames each time they are changed. This simplifies debugging, but costs at runtime.
For optimized builds, the compiler often infers that these steps are not needed, and keep the value in the CPU register for as long as necessary. It is possible that a local variable never gets the value written to the stack at all. The debugger in this case cannot track the value of the variable, but also does not know this and often reports data from the stack, as if it were the value of a variable.
source share