2010-02-04 6 views
25

Я могу сказать GDB немедленно вернуться из функции с return и вызвать функцию с call myFunction.Как мне заставить GDB вырваться из цикла?

Но как мне заставить его вырваться из текущего цикла? т. е. действовать так, как если бы он попал в break;.

Is jump myfile.c:<linenumber> способ сделать это?

+0

Вы хотите выполнить цикл нормально и «сломать» его или изменить выполнение, полностью пропустив цикл? Попросить отличиться от https://stackoverflow.com/questions/14651073/is-there-a-gdb-command-to-finish-a-loop-construct –

ответ

3

Я делаю это:
1. Сделайте список источников.
2. Установите точку останова на следующей строке, где заканчивается цикл.
3. Продолжить

+8

Вам даже не нужна настоящая точка останова. Вы можете использовать 'до', чтобы он продолжал до определенного номера строки. Это одноразовая точка останова. –

+8

Это не выход из цикла, это ждет, пока цикл не закончится (что может быть никогда). –

+0

http://stackoverflow.com/questions/14651073/is-there-a-gdb-command-to-finish-a-loop-construct/ –

0

Одним из способов может быть установка условия цикла на значение false. Но это будет означать, что вам придется подождать окончания текущей итерации.

Итак, подведем итог шаги будут:
1. Установить точку останова в последней строке цикла
2. Продолжить
3. Когда точки останова, установите переменную условие цикла к ложным.

Он не будет работать как оператор прямого разрыва.

+1

Да, это то, что я обычно делаю, но я уверен, что быть способом подражания 'break;' –

8

Вы можете использовать - до конца контура.

Вы должны дать его в конце цикла.

  • Полезно, если вам не нужен шаг в итерацию цикла.
+0

Если я правильно прочитал документы (http://www.delorie.com/gnu/docs/gdb/gdb_38.html), что эквивалентно установке временной точки останова после цикла - я был пытаясь вырваться из цикла. –

+0

этот совет по-прежнему ценен, а не ответ на вопрос. Может быть, вопрос должен быть расширен, чтобы включить заявление о том, что вы не хотите эту функцию? – hochl

Смежные вопросы