2011-10-14 7 views
6

En Xcode 4.x He editado mi esquema de ejecución para 'Habilitar Guard Malloc' ya que tengo un error incorrecto de Malloc que necesito rastrear . Soy consciente de que necesito correr en el simulador para usar esta característica. Sin embargo, cuando lo haga, por lo que la aplicación se congela inmediatamente y Xcode me muestra un seguimiento de pila que tiene este aspecto:Xcode 4: No se puede usar Habilitar Guard Malloc debido a un error de dylib para el simulador de iPad

Stack trace in Xcode 4.x

Googled alrededor para encontrar una solución, pero hasta el momento no hay alegría. Se informó en otro lugar que debería establecer una variable de entorno en mi esquema:

DYLD_INSERT_LIBRARIES -> /usr/lib/libgmalloc.dylib 

Sin embargo, esto no resuelve el problema. También probé 'lsystem' como valor, pero tampoco funcionó.

¿Alguien puede sugerir una solución a este problema de dylib, o tal vez recomendar una alternativa a 'Habilitar Guard Malloc' para identificar dónde se está excediendo un área de montón malloc?

ACTUALIZACIÓN

Para aclarar, este es el tipo de error que estoy trabajando con: la

malloc: *** error for object 0x2b4b54: incorrect checksum for freed object - object was probably modified after being freed. 
*** set a breakpoint in malloc_error_break to debug 

He tratado de establecer un símbolo de punto de interrupción malloc_error_break, sin embargo, todavía se rompe 'al azar 'sobre problemas de memoria en lugar de en el punto de exceder una región asignada.

+0

favor incluya seguimientos de pila como texto; ¡No pude encontrar esta página fácilmente con Google! –

+0

Estoy teniendo el mismo problema, incluso en un nuevo proyecto de utilidad en blanco. Parece haber algo roto en mi instalación, pero hasta ahora no tuve suerte en descubrirlo. Cuando cambié al simulador iOS 4.3, el problema desapareció, por lo que parece ser algo específico del simulador iOS 5. – russbishop

Respuesta

2

Para ayudar con la depuración se puede establecer MallocStackLogging, a continuación, cuando su aplicación se cierra, escriba esto en la consola GDB:

(gdb) info malloc-history 0x543216 

Reemplazar 0x543216 con la dirección del objeto que causó el accidente, y usted obtenga un seguimiento de pila mucho más útil y le ayudará a identificar la línea exacta en su código que está causando el problema.

See this article for more detailed instructions.

+0

Fantástico, gracias chown – KomodoDave

+0

Np, feliz de ayudar. – chown

Cuestiones relacionadas