нужна помощь с условной отладкой GDB (из кода C) - PullRequest
2 голосов
/ 20 февраля 2010

У меня есть код C, похожий на:

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

Я хочу прервать выполнение только тогда, когда flag == 0. Как мне установить точку останова (используя gdb)?

1 Ответ

4 голосов
/ 20 февраля 2010

В консоли GDB введите

b (some_line) if flag == 0

EDIT:
Если вы не можете print flag, когда остановитесь на some-line , тогда либо:
- (A) ваш код скомпилирован с оптимизацией (скорее всего), или
- (B) у вас есть глючный компилятор

Если это (A), добавить -O0 в дополнение к -g3.

Если вы можете print flag, то у вас глючная версия GDB. Попробуйте обновить до текущей версии 7.0.1.

...