2012-07-17 14 views
14

Sto lavorando a una serie di app iOS che condivideranno un codice base comune. Ho sviluppato il codice base comune come libreria statica e voglio che i suoi simboli di debug siano inclusi nel file .dSYM dell'app principale. La mia comprensione è che questo è possibile, ma non ho ancora funzionato.Simboli debug della libreria statica iOS non inclusi in dSYM

Il codice base comune nel proprio progetto che ha una libreria statica come destinazione. Questo progetto viene trascinato nel progetto dell'app principale. Nelle Fasi di generazione del target dell'app principale ho aggiunto la libreria statica come dipendenza da target e in Link Binary With Libraries. Il progetto si sviluppa e funziona come desiderato.

Ora, se si genera un archivio dal progetto principale, è possibile visualizzare quell'archivio nel Finder e contiene un file .dSYM che può essere utilizzato per simbolizzare i registri degli arresti anomali. Tuttavia, il .dSYM contiene solo simboli per l'app principale, non per la libreria statica. A un eccesso di conferma di ciò, ho eseguito il seguente:

dwarfdump /path/to/app.dSYM

E l'uscita (per lo più) non conteneva alcun simbolo dalla libreria statica. L'unica eccezione che ho trovato è che AppDelegate del mio progetto principale è una sottoclasse di un oggetto nella libreria statica e ci sono voci per quella super classe nel .dSYM. Tuttavia, nessuna delle altre classi è presente.

In del bersaglio Parametri di compilazione del progetto della libreria statica, ho impostato il seguente:

  • Simboli Striscia di debug durante la copia: NO
  • Striscia di prodotto legato: NO
  • Genera Debug Simboli: SI
  • Simboli nascosti per impostazione predefinita: NO

Se qualcuno può offrire una guida, sarei molto grato esso.

+0

Quale versione di XCode stai usando? – misnomer

+0

hai gestito questo problema? Ho lo stesso problema, non riesco ancora a capire cosa sta succedendo. – Vincent

risposta

1

Non sono sicuro di aver trovato la risposta, ma ho avuto lo stesso identico problema un paio di giorni fa. Ho funzionato nel modo seguente:

  1. Creare uno spazio di lavoro per contenere il progetto principale e il codice comune di base (libreria statica). Assicurati che i progetti siano fratelli e non genitori/figli.
  2. aggiungere una dipendenza di destinazione e collegare la base di codice comune
  3. Assicurati di includere i simboli di debug nella vostra base di codice comune
  4. Configurare le impostazioni dell'area di lavoro per la costruzione di tutti i progetti in una directory condivisa (credo che questa sia la chiave)
  5. Se si lamentano di non essere in grado di trovare le intestazioni, potrebbe essere necessario modificare il percorso di ricerca dell'intestazione utente nelle impostazioni di creazione o utilizzare la funzionalità della struttura ad albero.
+2

Questo potrebbe essere una buona risposta. Ad alcune cose manca però. Con "include i simboli di debug" intendi l'impostazione di compilazione GCC_GENERATE_DEBUGGING_SYMBOLS (Generate Debug Symbols) che è Sì di default? Anche la directory condivisa non è chiara. Per impostazione predefinita, ogni progetto all'interno dell'area di lavoro verrà creato nella propria directory in dati derivati. Sei riuscito in qualche modo a ottenere xcode per costruire ogni progetto nella stessa directory? – Onato

3

statici simboli lib fanno presentarsi nel file di dSYM di un app, e dwarfdump rivelerà che.

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

Questo dovrebbe mostrare i simboli della lib.

Tuttavia se siete (come sono stato recentemente) alla ricerca di una tabella di simboli da generare insieme alla vostra libreria statica, sono giunto alla conclusione che sarà abbastanza inutile; una volta compilato in una nuova app, i simboli e gli indirizzi cambieranno tutti e avrai un offset completamente diverso per ogni cosa (per favore qualcuno mi corregga se sbaglio).

Non sono del tutto sicuro che ci sia un modo per aggirare quella parte.

Problemi correlati