2
幫助我有類似的C代碼:需要有條件的gdb調試(C代碼)
int f() {
for (int i = 0; i < 100; i++) {
scanf flag;
if(flag)
scanf data1;
scanf data2;
}
}
我想打破的執行,只有當flag == 0
。我應該如何設置斷點(使用gdb)?
幫助我有類似的C代碼:需要有條件的gdb調試(C代碼)
int f() {
for (int i = 0; i < 100; i++) {
scanf flag;
if(flag)
scanf data1;
scanf data2;
}
}
我想打破的執行,只有當flag == 0
。我應該如何設置斷點(使用gdb)?
在gdb的控制檯類型
b (some_line) if flag == 0
編輯:
如果不能print flag
而在停止一些行,則:
- (A)你的代碼與優化編譯(可能),或
- (B)你有一個馬車編譯
如果是(A)中,除了添加-O0
到-g3
。
如果你可以print flag
,那麼你有一個bug的版本GDB
。嘗試升級到當前的7.0.1版本。
是的,我想已經...... 我得到'在重新設置斷點17錯誤:@dksjalk你有編譯帶有調試信息當前context.' – Lazer 2010-02-20 10:02:15
無符號標誌? gcc -g myfile.c – 2010-02-20 10:08:52
@dksjalk:或者更好-gcc -g3 – Potatoswatter 2010-02-20 10:09:51