Usa LogBrew Swift 0.1.6 o successivo. Per caricare gli artefatti di debug,
usa la CLI nativa di LogBrew 0.1.24 o successiva.
Pianifica i limiti dell’acquisizione
Verifica quando la tua app può reinviare ogni tipo di errore.
Imposta il valore della release prima della build. Deve identificare la
versione e la build dell’app. Usa lo stesso valore nell’SDK, nel caricamento
del dSYM e nel filtro dei problemi.
Non allegare ai metadati del crash payload degli utenti, corpi delle richieste
o header.
Aggiungi il prodotto per i crash
Prima configura la telemetria dell’SDK per la tua app. Il reinvio usa ilclient e il transport di quella configurazione.
Aggiungi l’SDK pubblico con Swift Package Manager.
LogBrew per inviare la telemetria. Aggiungi
LogBrewCrash solo quando l’app attiva esplicitamente l’acquisizione nativa
di crash o blocchi.
L’integrazione di acquisizione supporta iOS 15 o versioni successive. Mantieni
un solo oggetto di acquisizione di proprietà dell’app, perché i gestori nativi
degli errori fatali valgono per l’intero processo.
Configura un’identità esatta
Usa lo stesso progetto, la stessa release, lo stesso ambiente e lo stesso servizio nella configurazione di runtime e nel caricamento degli artefatti. LogBrew non deriva né sostituisce questi valori.NativeCrashConfiguration ha due limiti facoltativi:
Con un valore fuori intervallo, la configurazione genera
crash_invalid_configuration.
Attiva l’acquisizione dei blocchi
L’acquisizione dei blocchi è disattivata quandowatchdog è nil. Per
attivarla, sostituisci la dichiarazione di watchdog vista sopra prima di
chiamare install():
artifactIdentity. Senza questo valore, la configurazione genera
crash_invalid_configuration.
Mantieni un solo oggetto crashCapture per tutta la vita del processo. Un
secondo oggetto di acquisizione non può installarsi: la sua chiamata
install() genera crash_capture_owned. Per cambiare la soglia, usa il nuovo
valore al successivo avvio dell’app.
Il reinvio di un blocco terminato imposta crash.handled su true. Il
reinvio di un blocco ancora in corso al momento della terminazione del
processo imposta crash.handled su false.
Entrambe le forme includono il metadato numerico durationMs. Mantengono la
stessa identità degli artefatti usata dai frame dei crash fatali.
Il watchdog si mette in pausa quando l’app è inattiva o in esecuzione sotto un
debugger. Sospende l’acquisizione anche durante un forte surriscaldamento del
dispositivo.
Una soglia breve può segnalare come blocchi il normale lavoro del thread
principale. Prova la soglia con la configurazione di build che distribuisci.
Lo stato gestito descrive la ripresa dell’app. Non contrassegna il problema
come risolto. Un blocco gestito ha comunque bloccato l’interfaccia, quindi
esamina anche quello.
Reinvia dopo l’avvio
Dopo aver installato l’acquisizione, reinvia i report in sospeso tramite il client dell’SDK.maxReplayBytes. Controlla tutti e tre i conteggi. Un conteggio dei report in
sospeso pari a zero, da solo, non dimostra la consegna.
Attiva la consegna persistente prima del reinvio quando una richiesta non
riuscita deve sopravvivere a un altro riavvio. Non chiamare purge() durante
il normale ripristino della rete o dell’autenticazione.
Carica il dSYM corrispondente
Archivia l’app con le informazioni di debug attive. Conserva il dSYM della build esatta che usano gli utenti. Esamina gli UUID delle sue immagini.--expect-image-uuid per ogni architettura richiesta. Il comando non
riesce quando l’insieme di UUID trovati è diverso da quello atteso.
Verifica l’accesso all’account. Poi esegui lo stesso comando senza
--dry-run.
status mostra il risultato:
Una macchina di build può caricare con una chiave per gli artefatti del
progetto in
LOGBREW_TOKEN, invece che con l’accesso all’account. Crea la
chiave come indicato in
Crea una chiave per gli artefatti.
Quel caricamento restituisce uploaded. Verifica poi ogni identità con
l’accesso all’account:
status: "found" conferma l’artefatto. status: "missing" significa che
LogBrew non ha alcun artefatto per quell’identità.
La risoluzione confronta l’UUID dell’immagine e l’intera identità
dell’artefatto, non il nome del file sorgente. Una nuova build dello stesso
codice sorgente può avere UUID diversi. Carica il bundle dSYM esatto, non
un’intera directory di build.
Verifica la lettura da LogBrew
Filtra l’elenco dei problemi con lo stesso ambito di runtime. Questo esempio seleziona i problemiunresolved. Un problema risolto o archiviato non
compare.
symbolication. Questo
esempio mostra alcuni campi di un problema con un frame risolto, non la
risposta completa.
Leggi le prove del crash
Ogni frame ha il propriostatus. Il campo symbolication.status usa gli
stessi valori:
Nelle tue note, indica come non risolto un frame non risolto. Non descriverlo
come uno stack vuoto.
LogBrew risolve i frame quando leggi il problema. Un dSYM caricato in seguito
può risolvere i frame di un evento precedente. Non può aggiungere frame che
l’evento non ha acquisito.
Un frame dell’applicazione restringe la ricerca nel codice, ma non dimostra la
causa. Per i breadcrumb, la catena di eccezioni e le prove della traccia,
leggi l’indagine del problema:
source: "symbolicated" proviene da un
artefatto caricato. Un frame con source: "captured" è la posizione che l’app
ha inviato. Consulta Indaga su un problema
per i campi della risposta.
Mantieni l’ambito completo di progetto, release, ambiente e servizio in ogni
lettura. Non estendere a più progetti una ricerca non riuscita.
Verifica la configurazione di produzione
Usa un errore di test approvato nella build distribuita. Non usare mai l’azione di un cliente come innesco. Controlla ogni punto in ordine e fermati al primo che non riesce:- L’identità di runtime corrisponde all’identità dell’artefatto caricato.
- Un avvio successivo reinvia un evento confermato, con zero report scartati e zero report in sospeso.
- L’elenco dei problemi nell’ambito restituisce il problema di test con lo stato gestito atteso.
- LogBrew risolve il frame dell’applicazione atteso.
- Un avvio successivo senza errori non aggiunge un’altra occorrenza.
Ripristina in sicurezza
Per un’indagine generale sui problemi, usa
Indaga su un problema con l’API.
