Как запустить точку останова, если переменная экземпляра в классе имеет измененное значение?
Допустим у меня есть переменная, self.position
, Как заставить Xcode ломаться всякий раз, когда он меняет свое значение (ряд методов может изменить его).
4 ответов
для условного разрыва:
- Cmd+опция нажмите точку останова
- добавить условие вот так:
для разрыва в каждом случае значение изменилось:
- реализовать тривиальный сеттер (и геттер для чистого кода).
- добавить точку останова в сеттер.
Если вы хотите увидеть, кто вызвал сеттера-просто посмотрите на следующая строка в трассировке стека (viewDidLoad в моем примере):
обновление:
добавление контрольной точки
- перерыв в любом месте, так что
(lldb)
приглашение появляется в консоли - тип
watchpoint set variable _position
(замените _position на iVar, который вы хотите посмотреть) - запишите присвоенный номер контрольной точки для вновь созданной контрольной точки.
- изменить точку наблюдения для условного разрыва:
watchpoint modify -c "_position < 0.5" 1
где выражение в кавычках является условием, а число в конце-номером точки наблюдения, который вы отметили в #3. - продолжить работу. Вы будете нарушать всякий раз, когда значение соответствует условию, и вы сможете проверить кадр стека, чтобы понять, откуда поступил вызов.
установить символическую точку останова. Перейдите в навигатор точек останова, нажмите+, нажмите "Добавить символическую точку останова"."В первом поле Введите - [YourSubclassNameHere setPosition:]", добавьте любую другую настройку, которую вы хотите, затем нажмите вне диалогового окна.
ну простой способ сделать это-щелкнуть правой кнопкой мыши по переменной в окне часов и выбрать опцию watch variable. Xcode предупредит вас, когда значение будет изменено.
или вы могли бы взглянуть на