Cómo "establecer un punto de interrupción en malloc_error_break para depurar"


126

Estoy obteniendo muchas salidas de consola como esta sin que mi aplicación se bloquee:

malloc: * error para el objeto 0xc6a3970: el puntero que se está liberando no se asignó * establece un punto de interrupción en malloc_error_break para depurar

¿Cómo puedo saber qué objeto o variable se ve afectado?

Intenté establecer un punto de interrupción simbólico como este, pero nunca se detiene:

ingrese la descripción de la imagen aquí


1
Resuelvo este problema deshabilitando la inspección de safari. stackoverflow.com/a/43885754/6521116
Kris Roofe

Una de las causas de esto es una función / método que se supone que devuelve un objeto y llega al final de la función y no devuelve nada.
Xofo

Respuestas:


136

Establezca un punto de interrupción en malloc_error_break () abriendo el navegador de puntos de interrupción (Ver-> Navegadores-> Mostrar navegador de puntos de interrupción o ⌘7), haciendo clic en el botón más en la esquina inferior izquierda y seleccionando "Agregar punto de interrupción simbólico". En la ventana emergente que aparece, ingrese malloc_error_breaken el campo Símbolo, luego haga clic en Listo.

EDITAR: openfrog agregó una captura de pantalla e indicó que ya intentó estos pasos sin éxito después de que publiqué mi respuesta. Con esa edición, no estoy seguro de qué decir. No he visto que eso no funcione, y de hecho siempre mantengo un punto de interrupción en el conjunto malloc_error_break.


2
Esto funcionó para mí (sin el módulo). La causa del problema para mí fue que tenía UIImageun archivo respaldado y estaba sobrescribiendo el archivo con una imagen diferente. Esto causó un error cuando llamé UIImagePNGRepresentationa la imagen original (no cuando el archivo se sobrescribió).
Robert

No obtengo un botón más en la esquina inferior izquierda de la ⌘7barra ... ¿Quizás quisiste decir ⌘8?
ScottyBlades

@ScottyBlades adivinando que el acceso directo ha cambiado. Escribí esta respuesta hace 8 años y 7 versiones principales de Xcode ...
Andrew Madsen

@ AndrewMadsen No te preocupes, solo verifica si tiene sentido editar.
ScottyBlades

46

En su captura de pantalla, no especificó ningún módulo: intente configurar "libsystem_c.dylib"

ingrese la descripción de la imagen aquí

Lo hice, y funciona: el punto de interrupción se detiene aquí (aunque el seguimiento de la pila a menudo se eleva de alguna biblioteca oscura del sistema ...)


77
Parece que el nombre del módulo es diferente en iOS, es: libsystem_malloc.dylib. Breakpoint funciona para mí sin especificar un módulo.
Nestor

6

Tuve el mismo problema con Xcode. Seguí los pasos que diste y no funcionó. Me volví loco porque en cada foro que vi, todas las pistas para este problema son las que usted dio. Finalmente vi que puse un espacio después del malloc_error_break, lo suprimí y ahora funciona. Un problema tonto, pero si la solución no funciona, asegúrese de no haber puesto ningún espacio antes y después del malloc_error_break.

Espero que este mensaje ayude ...


4

Había dado permisos que no debería tener que escribir en algunas carpetas (especialmente / usr / bin /), y eso causó el problema. Lo arreglé abriendo Disk Utility y ejecutando 'Reparar permisos de disco' en el disco Macintosh HD.


Gracias, esto arregló mi máquina borked.
Matt Fletcher

2

Lo resuelvo por un inspector de safari cercano. Consulte mi publicación . También encontré sonido a veces cuando ejecuto mi aplicación para probar, luego abro el safari con el inspector automático activado, después de esto, realizo alguna acción en mi aplicación y luego se desencadenó este problema.

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.