2011-08-06 28 views
20

¿Cómo configuro malloc_error_break en Xcode4? Además, parece que estoy recibiendo este error malloc: *** error for object 0x4d80814: incorrect checksum for freed object - object was probably modified after being freed. Establecer malloc_error_break en Xcode 4

¿Hay alguna forma en que pueda verificar qué objeto es 0x4d80814? No aparece en la lista de variables en el depurador.

+1

No aparece en el depurador porque se ha desasignado y probablemente se hace referencia internamente desde el código de Apple. Sugeriría usar Analyzer para encontrar cualquier inconsistencia obvia en la administración de su memoria. –

+0

Lo más probable es que esté modificando un objeto ya desasignado, y 'malloc' lo detectará más adelante. Es probable que identifique la ubicación del error si lo perfila y utiliza el instrumento Zombies. –

Respuesta

53

Creo que así es como se hace.

  • Haga clic en el navegador puntos de ruptura (se parece a un poste de muestra) en la parte superior de la barra de la izquierda en XCode 4.
  • En la esquina inferior izquierda hay un signo más. Haz click en eso.
  • Agregue Punto de interrupción simbólico y establezca malloc_error_break como símbolo.
  • Haga clic en el siguiente botón de punto de interrupción (parece que |>) y se encuentra en el panel inferior. Te llevará a la línea que está causando el error.

Por lo general es causada por objetos que se crean como objetos parciales de otros objetos que no existen todavía (es decir SKPhysicsBody siendo creado antes de que exista su spritenode)

+3

no ayuda en mi caso –

+0

Puede proporcionarme más detalles sobre este punto: haga clic en el siguiente botón de punto de interrupción (parece que |>) y se encuentra en el panel inferior. Te llevará a la línea que está causando el error. Estoy usando xcode 8 y no encontré |> este tipo de símbolo –

13

Esto es lo que se ve el botón de puntos de ruptura como:

enter image description here

Y este es el signo más en la esquina inferior izquierda:

enter image description here

¡Hombre, me llevó un tiempo encontrarlos a ambos!

+3

Vamos, hombre. Para las personas que siempre han establecido sus puntos de interrupción a través de un atajo de teclado o mouse, esto es algo nuevo. No todos lo saben. – x10

4

También puede hacerlo directamente a través de la ventana de comandos de gdb.

break malloc_error_break 

o en LLDB:

breakpoint set -n malloc_error_break 

Para abrir la ventana de comandos del depurador en Xcode 4, haga clic en el botón central por encima de "Vista" en la esquina superior derecha, a continuación, haga clic en el botón central en la parte superior la esquina derecha del panel de depuración inferior que acaba de abrir. Consulte también Input to console in Xcode 4

+0

tenga en cuenta que esto es para gdb pero el depurador predeterminado suele ser lldb, que tiene una sintaxis diferente – yairchu