Имеет ли LLDB удобные переменные? Если да, то как их использовать? Если нет, есть ли что-то подобное?
У LLDB есть переменные удобства ($ var)?
Ответ 1
Я, наконец, понял это сам. Запустите help expr
в LLDB, и вы увидите:
Пользовательские переменные: Вы можете определить свои собственные переменные для удобства или использовать в последующих выражениях. Вы определяете их так же, как вы определяете переменные в C. Если первый символ ваша пользовательская переменная равна $, тогда значение переменной будет доступно в будущем выражения, иначе он будет доступен только в текущем выражении.
Итак, expr int $foo = 5
- это то, что я хочу.
Ответ 2
Я боролся с этим сегодня. Вот как это выглядит, имея дело с переменными Objective-C в LLDB:
expr UIApplication *$app = (UIApplication *)[UIApplication sharedApplication]
expr UIWindow *$keyWindow = (UIWindow *)[$app keyWindow]
и т.д.. Я нашел, что LLDB работает лучше всего, если вы не вложили никаких вызовов, и вы явно указываете тип возврата для каждого вызова.
Тем не менее, я получаю ошибку сегментации, когда я пытаюсь сделать initWithFrame:
работу с UIView позже.:/
Ответ 3
Просто используйте форму:
(lldb) expr var
Из tutorial:
(lldb) expr self $0 = (SKTGraphicView *) 0x0000000100135430 (lldb) expr self = 0x00 $1 = (SKTGraphicView *) 0x0000000000000000
Вы также можете вызвать функции:
(lldb) expr (int) printf ("I have a pointer 0x%llx.\n", self) $2 = (int) 22 I have a pointer 0x0. (lldb) expr self = $0 $4 = (SKTGraphicView *) 0x0000000100135430