2012-03-28 10 views

Respuesta

207
expr myString = @"Foo" 

(lldb) help expr
Evaluate a C/ObjC/C++ expression in the current program context, using variables currently in scope. This command takes 'raw' input (no need to quote stuff).

Syntax: expression --

Command Options Usage: expression [-f ] [-G ] [-d ] [-u ] -- expression [-o] [-d ] [-u ] -- expression

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

Examples:

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

IMPORTANT NOTE: Because this command takes 'raw' input, if you use any command options you must use ' -- ' between the end of the command options and the beginning of the raw input.

'expr' is an abbreviation for 'expression'

+1

De hecho, gracias! Una pequeña pregunta más: estoy haciendo esto para tratar de cambiar el texto de un UILabel: ''expr myLabel.text = @" hello! 'Pero obtengo un' error: propiedad 'text' no encontrado en el objeto de tipo 'UILabel *' '... ¿Alguna idea? – Eric

+9

'expr (void) [label setText: @" Foo "]' debería hacerlo. Dot-Syntax por lo general no funcionará en el depurador. lldb probablemente lo interpreta como quería acceder a un miembro de una estructura de c, pero no estoy seguro de si esta es la razón por la que no funcionará. Dot-Syntax tampoco funciona para 'po'. en lugar de 'po label.text', debe usar' po [texto de etiqueta] ' –

+0

Cool. Muchas gracias Matthias! – Eric

8

La siguiente cosa funciona para mí. Estoy usando Xcode 8.

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

  1. Coloque el punto de interrupción correctamente después de inicializado al valor deseado.
  2. luego ejecute "expression dict = nil" en lldb línea de comando para cambiarlo. (por ejemplo "nil")
  3. Paso sobre el punto de quiebre.
  4. Compruebe 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 
Cuestiones relacionadas