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.