Tag Archives: debugging

Выполнение кода в отладчике lldb

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

Нынешние версии Xcode используют в качестве отладчика lldb. В нем мы можем выполнить код, который изменит текущее состояние приложения. Ключевым словом здесь будет expr.

Например, меняем значение переменной или свойства.

expr _stringVar = @"New value"
expr _intVar = 10
expr self.stringProperty = @"New property value"

Изменения применяются сразу же. Нужно отметить, что изменение свойства вызывает setter свойства, который может менять состояние и других объектов.

Кроме того, мы можем вызывать методы объектов и C-функции. Единственный нюанс, мы должны указывать возвращаемый тип метода в случаях, если отладчик не может его определить сам, либо если он void.

expr (void)NSLog(@"Some specific log message from debugger")
expr (void)[self refreshValues]
expr [obj description]

Эти методы также могут менять состояние объектов в приложении.

Нужно понимать, что этот инструмент может быть опасным, приводить к нестабильности, существенно менять поведение программы. Пользуйтесь этими возможностями осторожно. Полезно будет почитать введение в lldb.

Advertisements