2012-06-27 9 views
11

ProblemaXcode Instruments è stripping simboli nonostante tutto le impostazioni di creazione del contrario

Instruments' Time Profiler è spogliando tutti i simboli tranne le librerie di sistema dal mio app, nonostante il fatto che io abbia disattivato questo comportamento in tutte accumulo rilevante impostazioni in Xcode - ma solo su una macchina di sviluppo. L'altra macchina di sviluppo si comporta normalmente.

Descrizione

Instruments' Time Profiler è spogliando tutti i simboli tranne le librerie di sistema, nonostante il fatto che io abbia disattivato questo comportamento in tutte le impostazioni di generazione rilevanti in Xcode - ma questo sta accadendo solo su uno dei miei sviluppo macchinari. Ho due macchine di sviluppo che eseguono la stessa versione di OS X, Xcode e Instruments, e ogni macchina usa una copia identica dello stesso progetto Xcode con impostazioni di compilazione, schemi e altre configurazioni identiche, e l'app viene profilata usando lo stesso dispositivo di test (iPhone 4S con l'ultima versione pubblica di iOS 5).

macchina 1
- Mac OS X 10.7.4
- Xcode 4.3.2 (4E2002)
- Strumenti 4.3 (4321)

Machine 2
- Mac OS X 10.7 .4
- Xcode 4.3.2 (4E2002)
- Strumenti 4,3 (4321)

Procedure per riprodurre

  1. Aprire incluso progetto di esempio su ogni macchina.
  2. Assicurarsi che l'iPhone 4S sia selezionato come dispositivo di test.
  3. Seleziona prodotto> Profilo
  4. All'avvio di Strumenti, selezionare Time Profiler e continuare.
  5. Eseguire l'app.
  6. Nota come vengono rimossi i simboli durante l'esecuzione su iMac (Macchina 1) ma non su MacBook Air (Macchina 2).

comportamento previsto

Simboli dal mio codice dovrebbe apparire nel tempo Profiler su entrambe le macchine.

Regressione

Ho provato tutti i seguenti, senza modificare i risultati effettivi:

  1. Riavviare la macchina.

  2. Cercando altre Xcode proietta

  3. L'eliminazione del "Derived Data" per tutti i progetti in Xcode Organizer.

  4. Re-symbolicating il documento in Instruments (selezionando attentamente il file DSYM corretto in ~/Library/blahblahblah ...)

Note Finali

Ecco un link ad un file .zip file di un progetto di esempio: Sample Project .zip

risposta

6

sono stato finalmente in grado di farlo funzionare con un metodo che è solo timido di uno scenario Nuke-e-Pave:

  1. essere assolutamente sicuri tutto strippaggio simbolo è disattivato per la configurazione di generazione corrente. Assicurati di averlo fatto per la tua configurazione di Release, se è quello che viene profilato per Instruments.
  2. Elimina l'app dal dispositivo iOS.
  3. Riavvia il dispositivo iOS.
  4. Riavvia il Mac (non mi fido di Xcode o Lion per tutti per chiudere tutti i processi rilevanti in altro modo).
  5. Avvia Xcode, vai a Organizer> Progetti ed elimina i Dati derivati ​​per il progetto interessato.
  6. Pulisci il tuo progetto. Diavolo, perché no?
  7. Configurazione e profilo per strumenti.
  8. Scegliere il Profiler orario in Strumenti per chiarezza.
  9. La prima esecuzione sarà nonmostrare i simboli, ma non uscire. Lascia funzionare gli strumenti!
  10. Re-simbolicare il documento in Strumenti, spostandosi con attenzione sul file dSYM corretto per la build corrente.Ciò dovrebbe essere più semplice poiché hai eliminato i dati derivati ​​nel passaggio 5.
  11. Ora dovresti essere in grado di vedere i tuoi simboli. Aiuta se nascondi i simboli C non oggettivi.

Perché suggerisco di eliminare l'app e riavviare il dispositivo iOS nei passaggi 2 e 3? Ho il sospetto che Xcode non esegua un'installazione pulita di ogni build, ma può installare delta, in modo tale che gli indirizzi dei simboli presenti in Instruments siano un misto tra la build attuale e le build precedenti. Se è così, allora questo problema è ancora più comune per qualcuno come me, che condivide un singolo dispositivo di prova tra più di un Mac. Questa ipotesi potrebbe essere selvaggiamente errata.

Se i passaggi precedenti non funzionano, contattatemi nei commenti. Mi piacerebbe creare un rapporto radar dettagliato ad un certo punto nel futuro.

+0

Non ho testato il metodo, ma sono sicuro che funzionerà, perché è un'installazione totalmente pulita dell'app. Ma sì, si prega di presentare una relazione radar e aggiornare qui, sarebbe molto gentile da parte sua :) –

+0

Non sono in grado di farlo, quando seleziono gli strumenti dsym dice che: "La Re-Symbolication richiede MyApp.app.dSYM e AppleProfileKEventAction per avere UUID corrispondenti. " – Lio

+0

Non sono sicuro di cosa sia AppleProfileKEventAction. So che i file .dSYM ottengono lunghi nomi UUID (li trovi in ​​qualsiasi directory Xcode li sta salvando per vedere cosa intendo). Fammi sapere cosa scopri. – jaredsinclair

-1

Prova ad aprire XCode 3 e lui Organizer. E prova ad aggiungere da questo Organizer dispositivi a entrambe le macchine.

Basta aprire Organizer e attendere che processi. Se vedi un pulsante "Usa per lo sviluppo", fai clic su di lui.

A volte, XCode 4 non può aggiungere un dispositivo veramente una per il pieno sviluppo.

0

Sono stati di fronte lo stesso e inciampato su questo thread.

Mi sono reso conto di aver prima profilato l'app con build di rilascio e dopo aver modificato lo schema in Xcode per la stessa app, il profiler non era ancora in grado di simbolizzare. Ho provato tutte le soluzioni ovvie che hai menzionato sopra, ma invano.

Il profiler in qualche modo si riferisce ancora alle impostazioni della prima build (release build) e quindi non è in grado di simbolizzare. Quindi, ho appena modificato l'identificativo del bundle dell'app per scopi di test in modo che venga creata una nuova app per scopi di profilazione. Potrei controllare il codice in cui le perdite esistono ora.

Provatelo e fatemi sapere se questo funziona anche per te. Ancora riflettendo sul perché gli strumenti non riescano a simboleggiare però.

+0

Hai provato a eliminare l'app dal dispositivo di test, spegnerlo e riaccenderlo e quindi ricostruirlo di nuovo? – jaredsinclair

+0

Ho il sospetto che Xcode non esegua un'installazione pulita di ogni build, ma potrebbe installare delta, in modo tale che gli indirizzi dei simboli siano misti. Questa ipotesi potrebbe essere selvaggiamente errata. – jaredsinclair

+0

Sì, sospetto lo stesso. Questo è il motivo per cui ho creato un nuovo identificatore del bundle dell'app e lo ho creato attraverso il profilo di provisioning di caratteri jolly. –

1

Io non sono sicuro che è stato fissato in 4,3 ma questo è un problema noto in 4,2 seen here

Instruments C'è un problema noto con l'azione Profilo di Xcode 4.2. Dopo una build in cui non sono stati modificati file di origine, Instruments non sarà in grado di raccogliere simboli per l'applicazione di destinazione.

Questo influisce progetti in cui sia:

  1. La configurazione di uscita viene selezionato per l'azione del profilo. (default)
  2. L'impostazione di build del prodotto Striscia Collegato è impostato su "Yes”, o un costume Esegui script di build strisce di fase del prodotto. (Non predefinita)

La soluzione è di fare una qualsiasi dei seguenti elementi:.

  1. Eseguire un "pulito" sul prodotto prima di iniziare il profilo azione
  2. fare una nuova del prodotto temporaneamente impostare la Striscia Linked impostazione t accumulo del prodotto o "No" mentre il profilo.
  3. Impostare la configurazione dell'azione Profilo su Debug.
  4. Eseguire i profili successivi direttamente dall'interno di Strumenti quando lo si fa non è necessario ricostruire. Quando sviluppi applicazioni Mac, l'utilizzo del modello GC Monitor in Strumenti può causare l'arresto anomalo di Instruments. Per risolvere il problema con , considerare la migrazione dell'applicazione su ARC.
1

Ho avuto un problema simile per giorni. Sono stato in grado di profilare la configurazione di Debug, ma non di rilasciare. Per prima cosa ho provato a fare una copia della configurazione di rilascio (come suggerito da qualche parte sul web), ma anche quella copia non ha funzionato.

Quindi ho creato una copia di Debug, denominata Profile, provata e i simboli di Profile sono stati mostrati nel profiler. Grande! Ho quindi cambiato i livelli di ottimizzazione ecc. Allo stesso come Release, e ora funziona! Volevo solo condividere questo, perché questo commento mi avrebbe risparmiato ore ...

+1

Questo è il commento più utile qui! Grazie mille, ha funzionato. Le altre soluzioni mi hanno solo fatto sbattere la testa contro il muro. Come "locate dSYM in ~/Library /", quando la finestra di dialogo del file aperto non mostra ~/Library/affatto, è nascosta in Mountain Lion ... – Hrissan

0

Ho avuto un problema simile in cui non avevo simboli nella mia applicazione os x che ho creato dalla riga di comando (quindi in questo caso è non un problema di iphone o xcode). Si è scoperto che il problema era dovuto a un cattivo DYLD_LIBRARY_PATH che conteneva il mio PERCORSO.Quando mi sono sbarazzato di tutti quei percorsi non di libreria, come/usr/bin /, ha funzionato.

Problemi correlati