ios - color - ion-toolbar



Simbolizando el registro de fallos para la aplicación con la biblioteca estática (1)

Recibo informes de fallas de una aplicación, pero Xcode no puede simbolizar los símbolos que son específicos de mi aplicación:

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x32c43a1c __pthread_kill + 8
1   libsystem_c.dylib               0x33a0a3b4 pthread_kill + 52
2   libsystem_c.dylib               0x33a02bf8 abort + 72
3   libsystem_c.dylib               0x33a306d4 __assert_rtn + 140
4   MyApplication                   0x0000dd54 0x9000 + 19796
5   MyApplication                   0x0000dbda 0x9000 + 19418
6   MyApplication                   0x000103f6 0x9000 + 29686
7   MyApplication                   0x0001035e 0x9000 + 29534
8   MyApplication                   0x0000f3cc 0x9000 + 25548
9   MyApplication                   0x00025d1e 0x9000 + 118046
10  CoreFoundation                  0x35847efc -[NSObject(NSObject) performSelector:withObject:] + 16
11  Foundation                      0x36eec7a2 __NSThreadPerformPerform + 262
12  CoreFoundation                  0x358b1a72 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 6
13  CoreFoundation                  0x358b3758 __CFRunLoopDoSources0 + 376
14  CoreFoundation                  0x358b44e4 __CFRunLoopRun + 224
15  CoreFoundation                  0x35844ebc CFRunLoopRunSpecific + 224
16  CoreFoundation                  0x35844dc4 CFRunLoopRunInMode + 52
17  GraphicsServices                0x3446b418 GSEventRunModal + 108
18  GraphicsServices                0x3446b4c4 GSEventRun + 56
19  UIKit                           0x344a2d62 -[UIApplication _run] + 398
20  UIKit                           0x344a0800 UIApplicationMain + 664
21  MyApplication                   0x0000b174 main (main.m:14)
22  MyApplication                   0x0000b124 0x9000 + 8484

Excepto por la línea en main.m. Sé que tengo el archivo dSYM todavía en el archivo de Xcode. Intenté usar la línea de comando para hacer referencia directamente a esos símbolos de depuración, pero siempre obtengo el mismo resultado. Intenté usar atos para buscar el símbolo directamente y no pude encontrarlo. Verifiqué que era el dSYM correcto al comparar el UUID.

Encuentra main.m cada vez, por lo que parece que está medio funcionando, pero no puede encontrar nada más.

Estoy utilizando una biblioteca estática en esta aplicación: ¿es posible que el bloqueo se produzca en la biblioteca estática? ¿Esa información de depuración estaría en un conjunto separado de símbolos de depuración? Dice que la biblioteca responsable es mi aplicación ... ¿diría el nombre de la biblioteca estática si fue responsable del bloqueo?

¡Gracias!

https://src-bin.com


Answer #1

Las bibliotecas estáticas están vinculadas al ejecutable de su aplicación, por lo que después de vincularlas no podrá identificar el origen original de ese código. Por lo tanto, siempre nombrará su aplicación como fuente binaria.

Es probable que esos marcos no estén siendo simbolizados, debido a la biblioteca estática que incluyó. Esto sucede si la biblioteca estática no tiene los símbolos, sino que está desprovista de ella. Ocurre con bastante frecuencia para las compilaciones de versiones de bibliotecas estáticas, donde la configuración predeterminada es la misma que para las aplicaciones, para quitar los símbolos. (¡Para aplicaciones, esto es lo correcto!)

En ese caso, los símbolos no se copiarían en el dSYM, porque no puede encontrarlos en la biblioteca estática.