2012-07-17 1287 views
14

Estoy trabajando en una serie de aplicaciones de iOS que compartirán una base de código común. Desarrollé la base de código común como una biblioteca estática y quiero que sean símbolos de depuración incluidos en el archivo .dSYM de la aplicación principal. Entiendo que esto es posible, pero aún no lo he logrado.Símbolos de depuración de biblioteca estática de iOS no incluidos en dSYM

La base de código común en su propio proyecto que tiene una biblioteca estática como destino. Este proyecto se arrastra al proyecto de la aplicación principal. En las Fases de compilación del objetivo de la aplicación principal, agregué la biblioteca estática como Dependencia de destino y en Enlace binario con bibliotecas. El proyecto se crea y ejecuta según lo deseado.

Ahora, si genero un archivo desde el proyecto principal, puedo ver ese archivo en Finder, y contiene un archivo .dSYM que se puede usar para simbolizar los registros de bloqueo. Sin embargo, .dSYM solo contiene símbolos para la aplicación principal, no para la biblioteca estática. A un exceso de confirmar esto, me encontré con lo siguiente:

dwarfdump /path/to/app.dSYM

Y la salida (en su mayoría) no contenía ningún símbolo de la biblioteca estática. La única excepción que he encontrado es que AppDelegate de mi proyecto principal es una subclase de un objeto en la biblioteca estática, y hay entradas para esa superclase en .dSYM. Sin embargo, ninguna de las otras clases está presente.

En configuración de generación del objetivo de los proyectos de la biblioteca estática, que se han fijado los siguientes:

  • Símbolos de Gaza de depuración durante la copia: no
  • tira de un producto vinculado: NO
  • Generar símbolos de depuración: SÍ
  • Símbolos ocultos por defecto: NO

Si alguien puede ofrecer alguna orientación, le agradecería mucho eso.

+0

¿Qué versión de XCode estás utilizando? – misnomer

+0

has logrado este problema? Tengo el mismo problema, todavía no puedo entender qué está pasando. – Vincent

Respuesta

1

No estoy seguro si encontraste tu respuesta pero tuve exactamente el mismo problema hace un par de días. Lo hice funcionar haciendo lo siguiente:

  1. Cree un espacio de trabajo para mantener su proyecto principal y base de código común (biblioteca estática). Asegúrese de que los proyectos sean hermanos y no padres/hijos.
  2. Añadir una dependencia de destino y vincular el código base común
  3. Asegúrese de incluir símbolos de depuración en su base de código común
  4. Configure los ajustes de espacio de trabajo para construir todos los proyectos en un directorio compartido (creo que esto es la clave)
  5. Si recibe quejas sobre la imposibilidad de encontrar encabezados, es posible que deba modificar la ruta de búsqueda del encabezado del usuario en la configuración de compilación o utilizar la función de árbol de origen.
+2

Esto tiene el potencial de ser una muy buena respuesta. Sin embargo, faltan algunas cosas. Con "incluir símbolos de depuración" ¿te refieres a la configuración de compilación GCC_GENERATE_DEBUGGING_SYMBOLS (Generate Debug Symbols) que es Sí por defecto? El directorio compartido tampoco está claro. Por defecto, cada proyecto dentro de su espacio de trabajo se compilará en su propio directorio en datos derivados. ¿De alguna manera lograste obtener xcode para construir cada proyecto en el mismo directorio? – Onato

3

símbolos estáticos lib hacen aparecer en el archivo dSYM de una aplicación, y dwarfdump revelarán eso.

dwarfdump -a path/to/app.dSYM >dsymAsText.txt 

Eso debería mostrarle los símbolos de la lib.

Sin embargo, si usted está (como he estado recientemente) buscando una tabla de símbolos que se genere para ir solo con su lib estática, he llegado a la conclusión de que será bastante inútil; una vez que se haya compilado en una nueva aplicación, todos los símbolos y direcciones cambiarán y usted tendrá una compensación completamente diferente para todo (por favor, alguien me corrija si estoy equivocado).

No estoy del todo seguro de que haya una forma de evitar esa parte.

Cuestiones relacionadas