0
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?

kkh.name
  • 3
  • 2

2 Answers2

0

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

vilaor
  • 41
  • 3
0

It depends on the way the compiler decided to compile your code. In your case, I believe that since variable b will always be used in your code, then the compiler might "declared" both a and b together to optimize execution time.

If you really want to understand what happened, disassemble the program and see the assembly that actually runs when you execute this code. I assume you will discover that the instruction that allocates the space on the stack frame for the variable b allocated the space for both variables (a & b) at the same time.

Amit Sides
  • 274
  • 2
  • 6