为什么GDB'step'命令跳过struct声明?

hib*_*ibc 2 gdb

int main(void)
{
    char A[] ='hi';
    struct dayInfo day;
    int x = 1;
}
Run Code Online (Sandbox Code Playgroud)

所以在gdb中我做到了

gdb> breakpoint main
gdb> run
Run Code Online (Sandbox Code Playgroud)

输出:

Breakpoint 1 , main()  line 1

char A[]= 'hi';

gdb>  step
Run Code Online (Sandbox Code Playgroud)

输出:

int x = 1;   line 3
Run Code Online (Sandbox Code Playgroud)

问:刚刚开始学习GDB,我不明白为什么'step'命令会跳过

int x = 1;   line 3.
Run Code Online (Sandbox Code Playgroud)

为什么不struct dayInfo day;呢?

Jon*_*oni 6

声明局部变量时,不执行任何代码.编译器通过创建更大的堆栈帧来考虑声明,因此在输入函数时有效地执行变量声明.没有代码,gdb可以在第1行和第3行之间停止,因此它继续到下一行.