Как пропустить прошлые циклы в ddd (gdb)

Во время многих, иногда наводящих, отлаживающих сеансов с использованием DDD, я натыкаюсь на циклы. И я продолжаю нажимать рядом, чтобы пройти мимо него, и если есть много итераций, я просто установил точку останова сразу после него и нажимаю "продолжить". Есть ли другой способ пройти мимо циклов?

Ответ 1

Вам нужна команда "до" - см. руководство gdb в http://www.gnu.org/software/gdb/documentation:

Продолжайте работать до строки источника мимо текущей строки, в текущей стек кадра. Эта команда используется для избежания одиночного шага через цикл более одного раза. это как и следующая команда, за исключением того, что когда до наступления прыжка он автоматически продолжает выполнение пока счетчик программы больше чем адрес прыжка.

Это означает, что когда вы достигаете конца цикла после одиночного шага, хотя это, пока ваша программа не будет продолжена пока он не выйдет из цикла. В контраст, следующая команда в конце цикл просто возвращается к начало цикла, которое заставляет вы пройдете следующий итерации.

Ответ 2

Обычно я использую "continue до здесь", который устанавливает временную точку останова в этом месте и немедленно продолжает выполнение. Доступ к нему осуществляется с помощью мыши 3, которая открывает всплывающее меню.