Pregunta

Estoy tratando de localizar fugas usando instrumentos, pero las fugas que veo allí son como las de la siguiente imagen:

  

fugas

Como puede ver, no hay información de qué línea de código se está filtrando exactamente. Todas las filtraciones que tengo, alrededor de 20, son así, o en otras palabras, las filtraciones no muestran ninguna línea de mi código en particular.

La fuga en esta imagen está relacionada con " _CFAllocatorSystem " (???) en CoreFoundation y tengo otros que simplemente dicen GSEvent. No tengo idea de lo que está generando estos.

¿Cómo puedo descubrir eso?

gracias por cualquier ayuda.

¿Fue útil?

Solución

Creo que desea entrar en los instrumentos después de ejecutar bajo fuga y seleccionar "Vista de fuente". Luego debe arrastrar sus archivos fuente a la ventana del instrumento. Luego mostrará las líneas en el código donde ocurre la fuga junto con la pila de llamadas.

Algunos arrojan código mío pierden una vista. Se ve así en Instrumentos: alt text http://img688.imageshack.us/img688/9669/screenshot20091028at131.png

Otros consejos

Lo que le muestra Leaks es la traza al código que asignó el objeto que está goteando (lo que significa que se retiene pero su aplicación no tiene variables que tengan esa dirección). Lo que no muestra es dónde se debería haber liberado el objeto para no causar la fuga, ya que eso es imposible de saber (es posible encontrar dónde se llama actualmente la liberación, pero eso puede no ser tan útil).

Entonces, lo que me dice este rastro es que usted retiene un poco de memoria asignada por el sistema, y ??luego se olvida la referencia: una clave es el '' PurpleEvent ''; línea, que es común en un hilo que trata con eventos de temporizador o quizás notificaciones. Podría ser que recibió una notificación y le ocultó algo, sin publicarla más adelante.

Si sabe en qué punto se produce la fuga, debería poder aislar qué código se está ejecutando durante ese tiempo.

Ver aquí y especialmente esta cita:

Esta lista le informa sobre los tipos, tamaños, direcciones e incluso sus pilas de llamadas de los objetos filtrados.

Entonces puede rastrear la fuente de los recuerdos filtrados a través de las pilas de llamadas.

El seguimiento de la pila muestra exactamente qué línea es la culpable. Al parecer, la línea 14 en main.m en su caso. ¿No sabes lo que confundiste?

El culpable fue el acelerómetro y estoy compilando para OS 3.0.

En otras palabras, el acelerómetro que Apple dijo que sus fugas fueron reparadas, sigue goteando como el infierno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top