XCode / GDB останавливается на моих точках останова автоматического продолжения при отладке на устройстве - PullRequest
4 голосов
/ 25 января 2011

Я только что обнаружил (благодаря еще одной очень полезной записи ), что я могу использовать команды GDB для создания точек останова, которые записывают информацию на консоль GDB, будь то отладка на устройстве или симуляторе.Это похоже на NSLog, но гораздо приятнее в том, что вам не нужно ждать, пока консоль догонит вас, у вас нет раздражающих временных меток, и вы можете включать / выключать их во время выполнения через представление точки останова XCode).

Очень хорошо, и я потратил время на выяснение того, как лучше всего регистрировать сообщения и переменные вместе.(Используйте команду GDB po [NSString stringWithFormat: @"Your message: %d %@",variable,[[object expression] description]]) для максимальной универсальности.

Все отлично работает в симуляторе.Когда я наконец приступил к отладке устройства, я получал сообщения просто отлично, но GDB останавливался на каждой точке останова, несмотря на то, что я настроил их на автоматическое продолжение, установив флажок в представлении точки останова.

Я попытался добавить команду «continue» для каждой точки останова, и она сработала, но GDB также начал извергать информацию о каждом попадании в точку прерывания и сообщать мне «Продолжение» после каждой строки.

Мои вопросы:

  1. Это происходит для вас?
  2. Могу ли я что-то изменить, чтобы автопродолжение также работало на устройстве
  3. Могу ли я сказать GDB быть менее многословным итолько дать мне вывод, который я печатаю?

Пожалуйста, помогите !!

Дэвид

Ответы [ 3 ]

1 голос
/ 03 апреля 2013

Я столкнулся с тем же поведением.Оказалось, что XCode дублировал точку останова на предполагаемой линии.Возможно, есть ошибка, когда левый щелчок иногда добавляет скрытую точку останова, а не отключает ее?

Решение было следующим:

  1. Выберите вкладку «Навигатор точек останова» в рамке навигатораleft
  2. Найдите дублирующиеся точки останова либо вручную, либо введя имя класса в поле поиска в нижней части навигатора.(помните, что несколько разделов проекта в списке могут содержать точку останова для одного и того же класса)
  3. Щелкните правой кнопкой мыши один из них и выберите «Правка», чтобы выяснить, будет ли это продолжение или нет.
  4. Право- нажмите на нежелательную точку останова и удалите
0 голосов
/ 25 января 2011

Другой очень полезный параметр - точка наблюдения - прерывание только при изменении данного выражения.

0 голосов
/ 25 января 2011

David

Есть несколько полезных консольных команд, с которыми вы, возможно, захотите ознакомиться.

info b (lists all breakpoints)
ena (enables all breakpoints)
dis (disables all breakpoints)
ena X (enable breakpoint number X)
dis X (disable breakpoint number X)

GDB также поддерживает условные точки останова:

cond X [condition]

И, команды для автоматического выполнения при достижении точки останова:

command X 

Aaron

...