2013-09-30 31 views
2
int main(void) 
{ 
    char A[] ='hi'; 
    struct dayInfo day; 
    int x = 1; 
} 

所以在gdb我做爲什麼GDB的'step'命令跳過struct聲明?

gdb> breakpoint main 
gdb> run 

輸出:

Breakpoint 1 , main() line 1 

char A[]= 'hi'; 

gdb> step 

輸出:

int x = 1; line 3 

問:剛開始學習GDB的d我不明白爲什麼「步」命令跳到

int x = 1; line 3. 

爲什麼不struct dayInfo day;

回答

6

當聲明局部變量時,不執行代碼。編譯器通過創建一個更大的堆棧框架來考慮聲明,所以在輸入函數時執行變量聲明是有效的。 gdb可以在第1行和第3行之間停止,所以沒有代碼,所以它繼續到下一行。

+0

嗨〜你能解釋一點點嗎? – hibc

+0

非常感謝! – hibc