#objective-c #xcode #debugging
#objective-c #xcode #отладка
Вопрос:
В MS visual Studio мы просто щелкаем правой кнопкой мыши добавить просмотр.
Как это можно сделать в Xcode?
Комментарии:
1. Проблема в том, что я не знаю, когда изменяется переменная. Если я знаю, я просто использую обычную точку останова.
Ответ №1:
Используйте po
команду в области отладки
Установите точку останова в соответствующей области кода, затем, когда программа остановится на точке останова, введите команды в консоли в области отладки. За соответствующей командой po
(print object) следует выражение, которое вы хотите оценить.
Если окно отладки не отображается в XCode, вы можете отобразить его через верхнее меню:
'View' -> 'Debug Area' -> 'Activate Console'
(XCode v8.x)
Пример
Чтобы оценить выражение типа, var1/var2
где var1
и var2
оба являются двойными, введите следующее в консоли:
po var1/var2
Консоль вернет что-то вроде:
(double) $2 = 3.085 [no Objective-C description available]
Отображение свойств объекта
Вы также можете вернуть определенное свойство объекта, используемого в данный момент в коде в этой точке останова:
po [bankInfo city]
И оно вернет что-то вроде:
(id) $4 = 0x000069e8 Testville
Обратите внимание, однако, что консоли, похоже, не нравится точечная нотация и она предпочитает квадратные скобки, когда это применимо. Например, это возвращает ошибку для меня:
po bankInfo.city
Я надеюсь, это то, что вы искали.
Комментарии:
1. @gideon Вы должны отметить это как принятый ответ (для пользователей Visual Studio, таких как op и я)
Ответ №2:
Ответ Гейба почти готов, но отсутствует одна важная деталь: выберите вывод отладчика . По умолчанию для параметра bottom установлено значение Target Output, поэтому po
команда вам ничего не показывает.
Вот сэндвич-приложение из руководства, которое я отлаживаю:
Будучи новичком в xcode и имея опыт работы в MS Visual Studio, я хотел именно то, что искал OP. Играя с ответом Гейба, я выбрал Debugger Output
и получил то, что хотел.
Ответ №3:
Мои старшие сказали использовать NSLog(@variable)……….
Комментарии:
1. Можем ли мы сделать это в каком-либо непосредственном окне?
2. Можем ли мы сделать это в непосредственном окне, как в vb.net ?
3. операционная система запрашивает способ просмотра выражений и переменных при достижении точки останова. Я точно знаю, о чем он говорит, поскольку я использую visual studio очень-очень долго, и есть немедленное окно, которое позволит вам кодировать, как если бы вы находились в консоли REPL с текущим фреймом стека в контексте. Таким образом, вы можете видеть значения переменных и т.д. там в зависимости от того, где находится ваша точка останова . Включение вызовов logging, хотя и полезных, на самом деле не очень хорошо, вы изменяете код, и вам нужно не забыть удалить их, как только вы закончите.
Ответ №4:
Установите некоторые точки останова в начале цикла и функций. Как только вы нажмете на точку останова (похожую на стрелку) в окне редактора, «Инструмент сборки и отладки» будет включен. Затем вы можете перейти к отладчику, щелкнув значок отладчика. справа от окна debugger будут видны переменные, выберите self-> затем переменная экземпляра u собирается установить точку наблюдения.Щелкните правой кнопкой мыши на нем и выберите «наблюдать за переменной».Будет установлена точка запуска, и вы получите уведомление со значением переменной при изменении.
Комментарии:
1. Сработало ли это? Или же вы можете просмотреть страницы по отладке в книге «Objective C для чайников» для лучшего понимания. Они четко объяснили, как настроить отладку.
2. Щелчок по точке останова приводит к тому, что точка останова становится бледной. Не знаю, что это значит.
3. Я просто пытаюсь просмотреть выражение. Я уже могу просматривать локальные переменные.
4. Да, искал способ также просматривать выражения, а не простые переменные.
Ответ №5:
Насколько я понимаю, вы хотели бы видеть, когда изменяется переменная. Для этого установите точку останова, щелкните по ней правой кнопкой мыши и выберите Edit Breakpoint
. Появится окно:
Убедитесь, что вы выбрали правильное действие, например, Debugger Command
или Log Message
, и поставьте галочку напротив параметров Automatically continue after evaluating
. Таким образом, вы получаете какое-то действие (например, ведение журнала, звук и т.д.) И не останавливаетесь на точке останова.
Ответ №6:
Если вы хотите знать, когда изменяется переменная, используйте «watch»:
- Установите точку останова где-нибудь в рассматриваемом классе;
- Запустите приложение в отладчике и дайте ему остановиться на вашей точке останова; и
- Перейдите в раздел «Переменные» в левой части нижней панели «Отладка», щелкните правой кнопкой мыши на соответствующем свойстве и выберите «Наблюдать».
Например, здесь я остановился на точке останова в viewDidLoad
и добавил «watch» для total
:
(Это Swift, но то же самое верно и для Objective-C.)
Теперь, если я «продолжу» выполнение (), Xcode будет приостанавливаться всякий раз, когда это свойство изменяется, и я смогу видеть, в какой строке кода
total
изменяется трассировка стека, чтобы добраться до этой точки, и т.д.