xcode debugging lldb

¿Cómo cambiar el valor de las variables mientras se depura con LLVM en Xcode?



debugging lldb (2)

En Xcode, GDB le permite cambiar las variables locales durante la depuración (vea cómo cambiar el valor NSString mientras depura en XCode? ). ¿LLDB ofrece una funcionalidad similar? Si es así, ¿cómo podemos usarlo?


Las siguientes cosas me funcionan. Estoy usando Xcode 8.

Si desea establecer alguna variable (por ejemplo, "dict") en cero y luego probar el flujo del código, puede intentar lo siguiente.

  1. Coloque el punto de interrupción correctamente después de inicializado al valor deseado.
  2. luego ejecuta "expression dict = nil" en lldb command line para cambiarlo. (por ejemplo, "nil")
  3. Paso sobre el punto de quiebre
  4. Verifique la variable "dict" en la siguiente línea. Será nil.

Se verá algo así como en la consola.

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


expr myString = @"Foo"

(lldb) ayudar a expr
Evaluar una expresión C / ObjC / C ++ en el contexto del programa actual, usando variables actualmente en el alcance. Este comando toma la entrada ''en bruto'' (no es necesario citar cosas).

Sintaxis: expresión -

Comando Opciones de uso: expresión [-f] [-G] [-d] [-u] - expresión [-o] [-d] [-u] - expresión

-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.

Ejemplos:

expr my_struct-> a = my_array [3]
expr -f bin - (índice * 8) + 5
expr char c [] = "foo"; c [0]

NOTA IMPORTANTE: Debido a que este comando toma la entrada ''sin procesar'', si usa cualquier opción de comando, debe usar ''-'' entre el final de las opciones del comando y el comienzo de la entrada sin formato.

''expr'' es la abreviatura de ''expresión''