В Xcode GDB позволяет вам изменять локальные переменные во время отладки (см. как изменить значение NSString во время отладки в XCode?). Имеет ли LLDB аналогичную функциональность? Если да, то как мы можем его использовать?
Как изменить значение переменных во время отладки с помощью LLVM в Xcode?
Ответ 1
expr myString = @"Foo"
(lldb) help expr
Вычислить выражение C/ObjC/С++ в текущем контекст программы, используя переменные, находящиеся в настоящее время в области видимости. Эта команда принимает "исходный" вход (нет необходимости цитировать материал).Синтаксис: выражение -
Параметры команды Использование: выражение [-f] [-G] [-d] [-u] - выражение [-o] [-d ] [-u] - выражение
-G <gdb-format> ( --gdb-format <gdb-format> ) Specify a format using a GDB format specifier string. -d <boolean> ( --dynamic-value <boolean> ) Upcast the value resulting from the expression to its dynamic type if available. -f <format> ( --format <format> ) Specify a format to be used for display. -o ( --object-description ) Print the object description of the value resulting from the expression. -u <boolean> ( --unwind-on-error <boolean> ) Clean up program state if the expression causes a crash, breakpoint hit or signal.
Примеры:
expr my_struct- > a = my_array [3]
expr -f bin - (index * 8) + 5
expr char c [] = "foo"; c [0]ВАЖНОЕ ПРИМЕЧАНИЕ. Поскольку эта команда принимает "сырой" вход, если вы используете какие-либо параметры команды, вы должны использовать "-" между концом параметры команд и начало исходного ввода.
'expr' является аббревиатурой для выражения '
Ответ 2
Для меня работает следующее. Я использую Xcode 8.
Если вы хотите установить некоторую переменную (например, "dict" ) на nil, а затем протестировать поток кода, вы можете попробовать следующее.
- Положите точку останова должным образом после инициализации до желаемого значения.
- затем выполните "выражение dict = nil" в командной строке lldb, чтобы изменить его. (например, "nil" )
- Шаг над точкой останова.
- Проверьте переменную "dict" в следующей строке. Это будет ноль.
Он будет выглядеть примерно как на консоли.
(lldb) expression dict = nil
(NSDictionary *) $5 = nil
Ответ 3
Если вы используете Xcode 10 или 11, правильно установите точку останова после инициализации в требуемую переменную, тогда вы можете легко изменить вашу переменную, используя po myString = "Hello World"
.