2009-08-17 15 views
6

Al simbolizar informes de fallos, noté que los números de línea están desactivados. Probé esto con un proyecto en el cual provoco un choque deliberadamente. Parece que el número de línea generado no incluye ciertas líneas, p. líneas de comentario o declaraciones del preprocesador del compilador (no estoy seguro de qué incluye o no) ...¿Cómo obtener los números de línea correctos en los informes de fallos simbolizados (iPhone/Mac)?

¿Hay una manera fácil de obtener desde el número de línea "desactivado" en el informe de fallos simbolizado a la línea de código real en ¿la fuente?

Editar: Un ejemplo de una línea en un informe de bloqueo symbolicated:

7 Luisterpaal 0x00005de2 -[SWFMP3 connection:didReceiveData:] (SWFMP3.m:320) 

Por lo tanto, el número de línea 320 es casi correcta, pero no exactamente. Está a pocas líneas ...

Respuesta

6

En una palabra ... no. Si usted está buscando en una línea como esta en un informe de bloqueo:

0 com.apple.CoreFoundation 0x95cb046b CFArrayAppendValue + 43

El "43" no es un número de línea, pero una ubicación de memoria desde el comienzo de la función. El código tal como lo escribió simplemente no existe en el binario compilado: el compilador optimiza y cambia el código (al menos en una compilación de versión), por lo que a menudo no coincide con lo que escribió.

Lamentablemente, la solución es proporcionarle a la persona que experimenta el bloqueo una versión de depuración que pueda depurar remotamente o al menos descartar las declaraciones NSLog() para rastrearlo y/o escribir métodos más pequeños.

+2

Upvoted para "escribir métodos más pequeños" :) – rpetrich

+0

Me refiero a los números de un registro de bloqueo simbolizado, p. el "320" en: 7 Luisterpaal 0x00005de2 - [Conexión SWFMP3: didReceiveData:] (SWFMP3.m: 320) –

3

Este Technical Note muestra cómo relacionar el informe de código

+0

No pude obtener números de línea más precisos, pero ese es un recurso increíble para marcar. – ckhan

0

tuve este problema también, pero sólo porque yo estaba buscando en una nueva versión del código de lo que fue compilado en el binario que se estrelló. Cuando volví al historial de fuentes y encontré la versión correspondiente de la fuente, los números de línea coincidían exactamente.

Cuestiones relacionadas