Simbolica iOS

Importante

Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile prendere in considerazione la migrazione.

Altre informazioni sulle sequenze temporali di supporto e sulle alternative.

I report di arresto anomalo di macOS, tvOS e iOS mostrano le tracce dello stack per tutti i thread in esecuzione dell'app al momento in cui si è verificato un arresto anomalo. Le tracce dello stack contengono solo indirizzi di memoria; non nomi di classe, metodi, nomi di file o numeri di riga necessari per comprendere gli arresti anomali.

Per ottenere gli indirizzi di memoria tradotti, è necessario caricare un pacchetto dSYM in App Center, che contiene tutte le informazioni necessarie per la simbolicazione. Altre informazioni sulla simbolica sono disponibili nella documentazione ufficiale per sviluppatori di Apple.

Il servizio Di compilazione e distribuzione di App Center può generare automaticamente un file dSYM e di mapping .zip di origine valido e caricare il file nel servizio diagnostica. Se usi App Center per compilare e distribuire automaticamente l'app agli utenti finali, non devi ottenere e caricare manualmente i file di simboli.

Arresti anomali nonmbolicati

Gli arresti anomali nonmbolicati vengono visualizzati nella sezione Diagnostica di App Center, in modo da poter visualizzare alcuni dettagli anche prima di caricare i simboli. I simboli mancanti di questi arresti anomali verranno visualizzati nella scheda "unsymbolicated". Se i simboli mancanti vengono caricati, il gruppo di arresti anomali non associati verrà sostituito da un gruppo di arresti anomali simbolici.

Ricerca del .dSYM bundle

  1. In Xcode aprire il menu Finestra e quindi selezionare Libreria.
  2. Selezionare la scheda Archivi .
  3. Selezionare l'app nella barra laterale sinistra.
  4. Fare clic con il pulsante destro del mouse sull'archivio più recente e scegliere Mostra nel Finder.
  5. Fare clic con il pulsante destro del mouse sul .xcarchive file in Finder e scegliere Mostra contenuto pacchetto.
  6. Verrà visualizzata una cartella denominata dSYMs che contiene il bundle dSYM.
  7. Creare un file ZIP del bundle dSYM.

Se si usa Visual Studio invece di Xcode, vedere Dove è possibile trovare il file dSYM per simbolicare i log di arresto anomalo di iOS? per trovare il file dSYM.

Caricamento di simboli

Portale di App Center

  1. Accedere ad App Center e selezionare l'app.
  2. Nel menu a sinistra passare alla sezione Diagnostica e selezionare Simboli.
  3. Nell'angolo superiore destro fare clic su Carica simboli e caricare il file.
  4. Dopo l'indicizzazione dei simboli da Parte di App Center, gli arresti anomali verranno simbolici.

React Native app iOS

Per ottenere i file di simboli per React Native file iOS, creare un file ZIP con il pacchetto dSYM nel Mac e la mappa di origine JavaScript dell'app. La mappa di origine deve essere denominata index.ios.map. I comandi seguenti genereranno la mappa di origine per le build di versione:

react-native bundle --entry-file index.ios.js --platform ios --dev false --reset-cache --bundle-output unused.jsbundle --sourcemap-output index.ios.map

App Center API

Il processo di caricamento dei simboli tramite l'API prevede una serie di tre chiamate API: una per allocare spazio nel back-end, una per caricare il file e una per aggiornare lo stato del caricamento. Il corpo della prima chiamata API deve essere impostato su symbol_typeApple.

  1. Attivare una POST richiesta all'API symbol_uploads. Questa chiamata alloca spazio nel back-end per il file e restituisce upload_url una symbol_upload_id proprietà e .
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. Usando la upload_url proprietà restituita dal primo passaggio, effettuare una PUT richiesta con l'intestazione e "x-ms-blob-type: BlockBlob" specificare il percorso del file su disco. Questa chiamata carica il file negli account di archiviazione back-end. Altre informazioni sulle intestazioni di richiesta BLOB PUT .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Effettuare una PATCH richiesta all'API symbol_uploads usando la symbol_upload_id proprietà restituita dal primo passaggio. Nel corpo della richiesta specificare se si desidera impostare lo stato del caricamento committed su (completato correttamente) il processo di caricamento o aborted (completato senza esito positivo).
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

Nota

L'API di caricamento dei simboli non funziona per i file di dimensioni superiori a 256 MB. Usare l'interfaccia della riga di comando di App Center per caricare questi file. È possibile installare l'interfaccia della riga di comando di App Center seguendo le istruzioni nel repository dell'interfaccia della riga di comando di App Center.

Interfaccia della riga di comando di App Center

È anche possibile usare l'interfaccia della riga di comando per caricare i file di simboli:

appcenter crashes upload-symbols --symbol {symbol file}

Bitcode

Bitcode è stato introdotto da Apple per consentire alle app inviate al App Store di essere ricompilate da Apple stesso e applicare l'ottimizzazione più recente. Se Bitcode è abilitato, i simboli generati per l'app nello Store saranno diversi da quelli del proprio sistema di compilazione.

La segnalazione degli arresti anomali di App Center non supporta completamente la simbolica creazione di arresti anomali dalle app abilitate per bitcode. Nel frattempo, è consigliabile disabilitare bitcode. La disabilitazione di bitcode semplifica in modo significativo la gestione dei simboli e attualmente non ha problemi noti per le app iOS.

Disabilitare bitcode per l'app

  1. In Xcode aprire le impostazioni del progetto facendo clic sull'elemento di primo livello in Project Navigator
  2. Passare alla pagina Impostazioni compilazione
  3. Cercare bitcode
  4. Nel risultato modificare il valore da Sì a No
  5. Ricompilare l'app

Con questi semplici passaggi, la segnalazione degli arresti anomali di App Center si comporta come di consueto.

Recuperare i simboli per le app abilitate per bitcode

Se si vuole mantenere abilitato bitcode, è possibile scaricare i file dSYM appropriati seguendo questa procedura:

  1. Aprire l'organizzatore di Xcode
  2. Selezionare l'archivio specifico dell'app caricata in iTunes Connect
  3. Fare clic sul pulsante "Download dSYMs". Questo passaggio inserisce i file DSYM compilati bitcode nell'archivio originale.
  4. Caricare i simboli nell'app e nella versione corrispondenti in App Center

Se l'organizzatore Xcode non fornisce nuovi simboli, è necessario scaricare i file dSYM dal portale di iTunes Connect seguendo questa procedura:

  1. Selezionare l'app nel portale di iTunes Connect
  2. Selezionare la scheda Attività in alto
  3. Selezionare la versione di compilazione dell'app con i simboli mancanti
  4. Fare clic sul collegamento Scarica dSYM
  5. Caricare il file scaricato in App Center. Questo file contiene i simboli necessari per App Center per simbolicare gli arresti anomali.

Risoluzione dei problemi relativi ai simboli

Se gli arresti anomali vengono ancora visualizzati non allineati dopo il caricamento dei simboli e la disabilitazione del codice bit, è possibile che i file dSYM caricati non corrispondano a quelli richiesti da App Center. Quando si caricano file dSYM, App Center li associa alla versione corretta dell'app in base agli UUID.

È possibile verificare se i file dSYM hanno gli UUID corretti usando uno strumento dell'interfaccia della riga di comando denominato nanodump.

  1. Trovare l'UUID nel file dSYM:
dwarfdump --u CrashProbeiOS.app.dSYM
  1. Il risultato dovrebbe essere simile a questo:
UUID:ADF53C85-4638-3EFF-A33C-42C13A18E915 (armv7)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
UUID:D449E33D-7E74-379D-8B79-15EE104ED1DF (arm64)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
  1. Controllare se l'UUID restituito corrisponde agli UUID visualizzati nella finestra di dialogo dei simboli di debug:

App Center visualizza l'UUID dei simboli obbligatori

Ignorare i simboli

Quando App Center non include tutti i file di simboli per la creazione di report di arresto anomalo completamente simbolici, gli arresti anomali vengono elencati nella scheda Unsymbolicated . I simboli obbligatori vengono caricati da questa pagina se è possibile accedervi.

Se non è possibile caricare i simboli, è possibile contrassegnarli come Ignorati selezionando le righe nella tabella e facendo clic sul pulsante Ignora versioni . Questo pulsante indica ad App Center di elaborare gli arresti anomali e di simbolicarli il più possibile con i simboli nel file. Al termine dell'elaborazione, verranno visualizzati nella scheda Arresti anomali parzialmente simbolici. Nuovi arresti anomali che dipendono anche da quegli stessi ID simbolo contrassegnati come ignorati ignoreranno la scheda Unsymbolicated mentre arrivano e passano attraverso il sistema.