2012-03-16 7 views
29

Estoy intentando resolver un error de "mensaje enviado a la instancia desasignada" en iOS.LLDB equivalente al comando "info malloc-history <address>" de GDB?

+0

Usa instrumentos, te da esa información. –

+2

@Richard, Usar el instrumento Zombie lo ayudará a depurar eso, pero a veces es bueno saber el historial del malloc mientras está sentado en gdb. –

+0

Eso estaría bien si los instrumentos no bloquearan la máquina –

Respuesta

0

Usted solía ser capaz de utilizar la herramienta de línea de comandos malloc_history desde un shell y darle la ID del proceso y la dirección de su interés. Parece que este comando ya no está instalado por las últimas herramientas de línea de comandos de Xcode. :-(

+0

malloc_history está instalado y funciona para mí, con xcode 4.6.3. – manylegged

2

Utilizar instrumentos, que obtendrá la línea exacta -

(en Xcode) ejecutarlo a través de "producto" -> "Perfil"

Esto iniciará Instruments, allí. usted debe elegir "Zombies" y reproducir el evento de error.

Te'l obtener un pop-up una vez que un zombi se llama, de prensa en la doble flecha para ver la línea exacta.

problema suele ser un mal __bridge (puentes opcionales __brige_retained/__bridge_transfer/__bridge)

+0

Esto funcionó perfectamente para mí. ¡Muchas gracias! –

+0

No veo la línea exacta. ¿Qué podría estar haciendo mal? – lwdthe1

+0

@ lwdthe1 Puede ver en Xcode la clase desasignada a la que se envió el mensaje: le daría una pista sobre la instancia desasignada. – avishic

39

Ver el mapa de mando LLDB-BGF (http://lldb.llvm.org/lldb-gdb.html) - usted tiene que importar un guión, y el comando se denomina malloc_info ahora. Obviamente, el registro de la pila malloc aún debe activarse en las opciones de esquema.

(lldb) script import lldb.macosx.heap 
(lldb) malloc_info --stack-history 0x10010d680 

Por desgracia, no se muestra dealloc de - no mostraron GDBS malloc-historia que también?

+0

cuando miré en la página vinculada, mostraba esos comandos como "disponible solo en Mac OS X" –

+5

Para mí, la primera línea tenía que ser 'command script import lldb.macosx.heap', de lo contrario la consola informaría 'error' : 'malloc_info' no es un comando válido. ' (Mac OS) lldb.macosx.heap' –

+0

'(LLDB) Importar script * >>> "crashlog" y "save_crashlog" comando instalado, utilice la opción de "help" para obtener ayuda detallada "malloc_info", "ptr_refs Se han instalado los comandos "," cstr_refs "," find_variable "y" objc_refs ", use las opciones" --help "en estos comandos para obtener ayuda detallada. * – tinkl

Cuestiones relacionadas