Как изменить значение переменных при отладке с LLVM в Xcode?



в Xcode GDB позволяет изменять локальные переменные во время отладки (см. Как изменить значение NSString во время отладки в XCode?). Не символы отладки предлагают подобную функциональность? Если да, то как мы можем его использовать?

645   2  

2 ответов:

expr myString = @"Foo"

(lldb) help expr
Вычислить выражение C / ObjC / C++ в текущем контекст программы, используя переменные, находящиеся в данный момент в области действия. Эта команда принимает "сырой" вход (нет необходимости цитировать материал).

синтаксис: выражение --

использование параметров команды: выражение [- f ] [- G ] [- d ] [- u] -- выражение [- o] [- d ] [-у ] - выражение

   -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 -- (индекс * 8) + 5
expr char c [] = "foo"; c[0]

важное примечание: поскольку эта команда принимает "сырой" ввод, если вы используете какие-либо параметры команды, вы должны использовать " -- " между концом параметры команды и начало необработанного ввода.

'expr' - это сокращение от 'expression'

следующие вещи работают для меня. Я использую Xcode 8.

Если вы хотите установить некоторую переменную (например, "dict") в ноль, а затем проверить поток кода, Вы можете попробовать следующее.

  1. правильно установите точку останова после инициализации до нужного значения.
  2. затем выполните "expression dict = nil" в командной строке lldb, чтобы изменить его. (например "ноль")
  3. шаг за точку останова.
  4. Проверьте переменную "dict" в поле следующая линия. Это будет ноль.

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

(lldb) expression dict = nil
(NSDictionary *)  = nil

Comments

    Ничего не найдено.