La referencia canónica para los comandos LLDB v. GDB es http://lldb.llvm.org/lldb-gdb.html
Usted desea utilizar el comando expr que evalúa una expresión. Es uno de los comandos lldb que toma "entrada en bruto" además de argumentos, por lo que a menudo necesita un "-" para indicar dónde terminan los argumentos (a expr) y comienzan los comandos. p.ej.
(lldb) expr -- [self setAlpha:1]
Hay un atajo, "p", lo que hace el - para usted (pero no permite ningún argumento), por ejemplo,
(lldb) p [self setAlpha:1]
Si la función (s) que está llamando no son parte de su programa, a menudo tendrá que declarar explícitamente su tipo de retorno por lo LLDB sabe cómo llamarlos. p.ej.
(lldb) p printf("hi\n")
error: 'printf' has unknown return type; cast the call to its declared return type
error: 1 errors parsing expression
(lldb) p (int)printf("hi\n")
(int) $0 = 3
hi
(lldb)
Hay una forma ordenada de solucionar el problema del argumento de coma flotante, por cierto. Usted crea un archivo de "prefijo de expresión" que se agrega a cada expresión que ingrese en lldb, con un prototipo de sus métodos de clase. Por ejemplo, tengo una clase MyClass que hereda de NSObject, tiene dos métodos de interés, "setArg:" y "getArg" que establecen y obtienen un flotante ivar. Este es un pequeño ejemplo tonto, pero muestra cómo usarlo. Aquí hay un archivo de prefijo que escribí para LLDB:
@interface NSObject
@end
@interface MyClass : NSObject
- init;
- setArg: (float)arg;
- (float) getArg;
@end
extern "C" {
int strcmp (const char *, const char *);
int printf(const char * __restrict, ...);
void puts (const char *);
}
en mi archivo ~/.lldbinit
agrego
settings set target.expr-prefix /Users/jason/lldb-prefix.h
y ahora que puedo hacer
(lldb) p [var getArg]
(float) $0 = 0.5
(lldb) p [var setArg:0.7]
(id) $1 = 0x0000000100104740
(lldb) p [var getArg]
(float) $2 = 0.7
Se dará cuenta de que incluí un par de la biblioteca C estándar funciona aquí también. Después de hacer esto, no es necesario volver a lanzar los tipos de devolución de estos, p.
(lldb) p printf("HI\n")
<no result>
HI
(lldb) p strcmp ("HI", "THERE")
(int) $3 = -12
(. Un arreglo para que "< ningún resultado >" cosa ha estado comprometida con las fuentes LLDB TOT ya)
Hay un ejemplo [en lldb-for-gdb-users.txt] (http://opensource.apple.com/source/lldb/lldb-69/docs/lldb-for-gdb-users.txt) para C: 'expr (int) printf (" ... ")'. ¿Puede ser que prefijas la invocación de tu método con 'expr (type)'? – osgx