2010-02-20 40 views
2

幫助我有類似的C代碼:需要有條件的gdb調試(C代碼)

int f() { 
    for (int i = 0; i < 100; i++) { 
    scanf flag; 
    if(flag) 
     scanf data1; 
    scanf data2; 
    } 
} 

我想打破的執行,只有當flag == 0。我應該如何設置斷點(使用gdb)?

回答

4

在gdb的控制檯類型

b (some_line) if flag == 0 

編輯:
如果不能print flag而在停止一些行,則:
- (A)你的代碼與優化編譯(可能),或
- (B)你有一個馬車編譯

如果是(A)中,除了添加-O0-g3

如果你可以print flag,那麼你有一個bug的版本GDB。嘗試升級到當前的7.0.1版本。

+0

是的,我想已經...... 我得到'在重新設置斷點17錯誤:@dksjalk你有編譯帶有調試信息當前context.' – Lazer 2010-02-20 10:02:15

+2

無符號標誌? gcc -g myfile.c – 2010-02-20 10:08:52

+0

@dksjalk:或者更好-gcc -g3 – Potatoswatter 2010-02-20 10:09:51