Как вы просматриваете или оцениваете выражение в xcode, например, в непосредственном окне visual studio?

#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 команда вам ничего не показывает.

Вот сэндвич-приложение из руководства, которое я отлаживаю:

скриншот выражения eval в xcode

Будучи новичком в 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»:

  1. Установите точку останова где-нибудь в рассматриваемом классе;
  2. Запустите приложение в отладчике и дайте ему остановиться на вашей точке останова; и
  3. Перейдите в раздел «Переменные» в левой части нижней панели «Отладка», щелкните правой кнопкой мыши на соответствующем свойстве и выберите «Наблюдать».

Например, здесь я остановился на точке останова в viewDidLoad и добавил «watch» для total :

Смотреть

(Это Swift, но то же самое верно и для Objective-C.)

Теперь, если я «продолжу» выполнение (введите описание изображения здесь), Xcode будет приостанавливаться всякий раз, когда это свойство изменяется, и я смогу видеть, в какой строке кода total изменяется трассировка стека, чтобы добраться до этой точки, и т.д.