Отладчик XCode: отображать длинные строки

При отладке программы в XCode у меня есть несколько переменных CFStringRef, которые указывают на строки длиной около 200 символов.

В отладчике он показывает значения этих строк только до определенной длины, а затем просто зачеркивает их. Я бы очень хотел увидеть полное значение строк.

Есть ли какой-то параметр, который я могу настроить, чтобы он не прерывал их произвольной длины?


person mcccclean    schedule 10.02.2009    source источник
comment
Неужели нет способа заставить графический интерфейс отображать неисключенную версию строки?   -  person i_am_jorf    schedule 15.12.2010
comment
Примечательно, что отладчик показывает строку с escape-символами. Когда строка печатается в консоли, escape-символы не включаются. \код\ против кода. Это ограничение в 100 символов очень раздражает, поскольку оно не позволяет вам скопировать, скажем, длинную строку JSON, а затем сразу же вставить эту строку (включая escape-символы) в качестве переменной тестовой строки в вашем коде.   -  person pkamb    schedule 30.01.2015


Ответы (3)


В консоли отладки вы можете получить строковое значение, выполнив что-то вроде:

(gdb) print (void)CFShow(myCFString)

or:

Команда (gdb) po (NSString*)myCFString

Either of those will display the entire string's contents to the debugging console. It's probably the easiest way to deal with large, variable-length strings or data structures of any kind.

For more information, the print в отладчике в основном выводит некоторую структуру данных на консоль. Вы также можете вызывать любые функции или что-то еще, но, поскольку print не имеет доступа к объявлениям функций, вы должны убедиться, что вы предоставляете их неявно (как показано в примере выше), иначе команда print будет жаловаться.

po — это сокращение для print-object и то же самое, что и print, за исключением объектов Objective-C. В основном это работает так:

(gdb) print (const char *)[[theObject debugDescription] UTF8String]

This is really useful for examining things like NSData и объекты NSArray/NSDictionary.

Дополнительную информацию об отладке см. в Техническом примечании TN2124 — Магия отладки в Mac OS X и (из консоли отладчика) вы также можете ввести команду help.

person Jason Coco    schedule 10.02.2009
comment
Спасибо. Немного хромает, что это не встроено в представления XCode, но, по крайней мере, я могу видеть то, на что смотрю сейчас. - person Brian Moeskau; 24.09.2010
comment
При просмотре строки в отладчике включаются escape-символы. Они не выводятся на консоль с помощью po. Знаете ли вы какой-либо способ сохранить escape-символы в строке? - person pkamb; 30.01.2015
comment
Для меня вариант печати не подавил сокращение строки, поэтому я все еще не вижу всю строку. - person pojo; 12.03.2015
comment
Решение для отображения длинных строк см. в разделе stackoverflow.com/questions/31402092/ - person Dark; 16.03.2020

Чтобы отобразить действительно длинную строку, используйте метод из print long string в консоли отладки xcode 6.

  1. В консоли lldb увеличьте max-string-summary-length
setting set target.max-string-summary-length 10000
  1. Распечатайте свою строку с помощью команд print или po
print my_string
person Alexander Ushakov    schedule 04.05.2020

Если вы компилируете проект С++ в xcode, просто используйте эту команду

po string_name

person Shauket Sheikh    schedule 18.07.2017
comment
К сожалению, это также не подавляет сокращение строки, оно по-прежнему усекается многоточием для длинных строк. - person Dark; 16.03.2020