Tengo problemas para hacer coincidir las compensaciones en las trazas de los volcados de bloqueos de iOS con compensaciones en el desensamblaje del binario como salida por otool.Coincidencia de compensaciones en el volcado de emergencia de iOS con el binario desmontado
¿Alguien puede confirmar cómo, en principio, juego esto? Por ejemplo, si consigo una línea en el volcado de bloqueo:
0 myapp 0x00005b0a 0x1000 + 19210
habría que esperar que el desplazamiento de la instrucción infractora en el archivo binario para ser 0x5b0a, 0x4b0a .... o algo más?
En su decodificación de la información de la cabecera, otool también da, por ejemplo, esta información (el código real comienza a 0x0000224c desplazamiento en el fichero):
Section
sectname __text
segname __TEXT
addr 0x0000224c
size 0x00063ad2
offset 4684
align 2^2 (4)
reloff 0
nreloc 0
type S_REGULAR
attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
reserved1 0
reserved2 0
Por lo tanto, no estaba 100% seguro Estaba interpretando esto correctamente, pero parece decir que el código, en + 0x224c en el archivo, termina en un offset de 0x124c en la memoria, pero entonces no estaba exactamente seguro de cómo encajaba esto, por ejemplo, con la ubicación 0x1000.
El problema que tengo es que dado, por ejemplo, el desplazamiento 0x5b0a, ni la instrucción ni en 0x4b0a ni en 0x6b0a tiene sentido como la instrucción real en cuestión (incluido el hecho de que, por ejemplo, ubicaciones más abajo en la pila no apunte a instrucciones de bifurcación).
(sé que, al menos en encarnaciones anteriores de ARM, había una discrepancia entre el valor de la PC y la dirección de memoria correspondiente debido a la tubería de instrucción. Estaba asumiendo que se tomaría una diferencia tan en cuenta en las compensaciones informadas en el vertedero, o en cualquier caso, vería las instrucciones de la rama en cuestión unas pocas instrucciones a cada lado del señalado si tal diferencia no se tuviera en cuenta ...)
¿Alguien puede arrojar algo de luz?
¿Hay alguna razón por la que no pueda simplemente simbolizar? http://stackoverflow.com/questions/3832900/how-to-manually-symbolicate-ios-crash-to-view-crash-logs/8648232#8648232 –
No puedo * simplemente * simbolizar porque no tengo el archivo de símbolos (el código es compilado por un tercero). Sin embargo, si esa es la única opción, entonces supongo que tendré que preguntar si pueden proporcionar el archivo de símbolos. Entonces, es más que si hay una forma de calcular el desplazamiento, es un proceso más rápido para mí en este caso particular. –