'Why gdb command "info locals" also print undeclared variable?

int a = 10;
if(a >= 5)
    printf("Hello World");
int b;
b = 3;

For example I command "info locals" before execute line 4 "int b;" but gdb print information of variables a and b. Why gdb work like this and how can I print only declared variables?



Solution 1:[1]

gdb shows b variable because it has been declared by your compiler

Assuming this code is inside a function, once execution flow enters the function it allocates local variables in the stack, this is where a and b values reside. That's because the compiler reads your code and makes all declarations at the beginning, even if they haven't been declared on top of your function.

Take a look at How the local variable stored in stack

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 vilaor