Подтвердить что ты не робот

Как печатать строковое значение из действия точки останова в Xcode 4?

У меня есть действие точки останова, и я использую параметр Log из раскрывающегося списка. Я хотел бы распечатать значение строки (summary). Я делаю это:

the person name is: @[email protected]

но печатает адрес памяти. Я могу переключиться на команду "Команда отладчика" и сделать

po f.name

но затем я теряю свое описание, которое используется в первом варианте. Используя параметр "Журнал", существует ли способ распечатать строковое значение, а не адрес памяти?

4b9b3361

Ответ 1

Есть несколько вещей, которые вы можете сделать. Добавьте функцию журнала из раскрывающегося списка, затем добавьте еще одно поле и выберите Debugger Command и введите po f.name.

Если вы хотите, чтобы ваш журнал был более сложным, вы могли бы сделать что-то более похожее на это:

the person name is: @(const char *)[(NSString*)[p.name description] UTF8String]@

Лучше всего использовать графический интерфейс отладчика для просмотра переменных. Если вы хотите регистрировать сообщения, используйте NSLog.

Ответ 2

Вы можете использовать инструкции NSLog с точками останова с помощью команды "Debugger Command", но вам нужно добавить "expr"

expr (void)NSLog(@"The Person Name is %@", p.name)

-

using expr command with a Debugger Command as breakpoint in Xcode 4.4

Ответ 3

Вот решение, использующее только одно действие и использующее меньшее количество символов, чем решение expr.

debugger command using NSlog

Однако, если вы не добавите void следующим образом:

po (void)NSLog(@"the person name is: %@", p.name)

вы получите раздражающее "ноль", распечатанное в вашем журнале. например:

(lldb) po NSLog(@"foo")
 nil
2013-06-19 14:42:59.025 TheMove[95864:c07] foo

(lldb) po (void)NSLog(@"foo")
2013-06-19 14:43:10.758 TheMove[95864:c07] foo

Если вы можете жить с nil (я могу), это быстрее ввести и легче запомнить только po

Ответ 4

В итоге я использовал 2 разных действия для одной и той же точки останова. Сначала войдите в систему, а затем команду отладчика с именем po varName. Только нижняя сторона будет печатать в двух разных строках.

enter image description here