Использование команды Say в точке останова в Xcode

Я использую Xcode и хотел бы установить точку останова, которая говорит о NSString из моего кода. То, что я делаю, это установить точку останова, а затем отредактировать ее. Я добавляю действие "Shell Command". Первый аргумент say, и второй аргумент - это то, где у меня возникают проблемы.

 NSString *myString = @"This is a test";

Если я поместил @[email protected] в качестве второго аргумента, он считывает адрес памяти. ех. 0x0b4be130

Если я попробую @[myString UTF8String], он даст мне другой адрес памяти.

Если я разыскиваю myString, @*[myString UTF8String]@, он дает мне только первый символ строки.

Как это сделать правильно?

Ответ 1

LLDB на самом деле имеет встроенный интерпретатор Python со всей библиотекой LLDB. Вы можете получить доступ к этому с помощью команды script debugger. При этом мы сможем легче захватить строковое представление переменной в кадре и отправить ее команде OS say. Добавить действие отладчика:

script os.system("say " + lldb.frame.GetValueForVariablePath("myVariable").description)

чтобы достичь того, чего вы хотите. Вы даже можете завершать скрипты Python в качестве новых команд LLDB, поэтому вы можете создать команду отладчика под названием say, которая явно описывает описание базовых объектов; посмотрите http://lldb.llvm.org/python-reference.html для ознакомления с установкой этих типов скриптов.