Usa LogBrew Swift 0.1.6 o posterior. Usa la CLI nativa de LogBrew 0.1.24 o
posterior para subir artefactos de depuración.
Planifica el límite de la captura
Comprueba cuándo puede tu app reenviar cada tipo de error.
Define el valor del release antes de compilar. Debe identificar la versión y la
compilación de la app. Usa el mismo valor en el SDK, en la carga del dSYM y en
el filtro de incidencias.
No adjuntes a los metadatos del fallo datos de usuarios, cuerpos de solicitudes
ni encabezados.
Añade el producto de fallos
Primero, configura la telemetría del SDK para tu app. El reenvío usa eseclient y ese transport.
Añade el SDK público con Swift Package Manager.
LogBrew para enviar telemetría. Añade LogBrewCrash solo
cuando la app active de forma explícita la captura de fallos o bloqueos
nativos.
La integración de captura admite iOS 15 o posterior. Mantén un único objeto de
captura propiedad de la app, porque los manejadores nativos de errores fatales
afectan a todo el proceso.
Configura una identidad exacta
Usa el mismo proyecto, release, entorno y servicio en la configuración de ejecución y en la carga de artefactos. LogBrew no deduce ni reemplaza estos valores.NativeCrashConfiguration tiene dos límites opcionales:
Un valor fuera de su rango hace que la configuración lance
crash_invalid_configuration.
Activa la captura de bloqueos
La captura de bloqueos está desactivada cuandowatchdog es nil. Para
activarla, reemplaza la declaración de watchdog anterior antes de llamar a
install():
artifactIdentity. Sin ella, la configuración lanza
crash_invalid_configuration.
Mantén un único objeto crashCapture durante toda la vida del proceso. Un
segundo objeto de captura no se puede instalar. Su llamada a install() lanza
crash_capture_owned. Para cambiar el umbral, usa el valor nuevo en el
siguiente inicio de la app.
Un bloqueo recuperado se reenvía con crash.handled en true. Un bloqueo en
curso que deja el cierre del proceso se reenvía con crash.handled en false.
Las dos formas incluyen los metadatos numéricos durationMs. Conservan la
misma identidad de artefacto que usan los marcos de los fallos fatales.
El watchdog se pausa mientras la app está inactiva o en un depurador. También
suspende la captura cuando hay una presión térmica grave.
Un umbral corto puede informar del trabajo normal del hilo principal como
bloqueos. Prueba el umbral con la configuración de compilación que publicas.
El estado gestionado describe la recuperación. No marca la incidencia como
solucionada. Un bloqueo gestionado también bloqueó la interfaz, así que
revísalo igualmente.
Reenvía tras el inicio
Después de instalar la captura, reenvía los informes pendientes con tu cliente del SDK.maxReplayBytes. Revisa los tres recuentos. Un recuento de pendientes en cero
no demuestra por sí solo que se enviaran.
Activa el envío persistente antes del reenvío cuando una solicitud fallida deba
sobrevivir a otro reinicio. No llames a purge() durante una recuperación
habitual de la red o de la autenticación.
Sube el dSYM correspondiente
Archiva la app con la información de depuración activada. Conserva el dSYM de la compilación exacta que usan los usuarios. Revisa los UUID de sus imágenes.--expect-image-uuid por cada arquitectura necesaria. El comando falla
cuando el conjunto de UUID encontrado no coincide con el esperado.
Comprueba el acceso de la cuenta. Después ejecuta el mismo comando sin
--dry-run.
status del JSON muestra el resultado:
Una máquina de compilación puede subir con una clave de artefactos del proyecto
en
LOGBREW_TOKEN en lugar del acceso de la cuenta. Crea la clave como se
muestra en Crea una clave de artefactos.
Esa carga informa uploaded. Verifica cada identidad más tarde con el acceso
de la cuenta:
status: "found" confirma el artefacto. status: "missing" significa que
LogBrew no tiene ningún artefacto para esa identidad.
La resolución compara el UUID de la imagen y la identidad completa del
artefacto, no el nombre del archivo fuente. Una nueva compilación del mismo
código fuente puede tener UUID distintos. Sube el paquete dSYM exacto, no un
directorio de compilación completo.
Verifica la lectura alojada
Filtra la lista de incidencias con el mismo alcance de ejecución. Este ejemplo selecciona incidenciasunresolved. Una incidencia resuelta o archivada no
aparece.
symbolication. Este ejemplo muestra
algunos campos de una incidencia con un marco resuelto, no la respuesta
completa.
Lee la evidencia del fallo
Cada marco tiene su propiostatus. El campo symbolication.status usa los
mismos valores:
En tus notas, deja un marco sin resolver como sin resolver. No lo informes como
una pila vacía.
LogBrew resuelve los marcos cuando lees la incidencia. Un dSYM subido más tarde
puede resolver marcos de un evento anterior. No puede añadir marcos que el
evento no capturó.
Un marco de la aplicación acota la búsqueda en el código, pero no demuestra la
causa. Para ver los pasos anteriores, la cadena de excepciones y la evidencia
de la traza, lee la investigación de la incidencia:
source: "symbolicated" viene de un artefacto
subido. Un marco con source: "captured" es la ubicación que envió la app.
Consulta Investigar una incidencia para ver los
campos de la respuesta.
Mantén el alcance completo de proyecto, release, entorno y servicio en cada
lectura. No amplíes una búsqueda fallida a otros proyectos.
Verifica la configuración de producción
Usa un error de prueba aprobado en la compilación desplegada. Nunca uses una acción de un cliente como desencadenante. Revisa cada punto en orden y detente en el primer error:- La identidad de ejecución coincide con la identidad del artefacto subido.
- Un inicio posterior reenvía un evento confirmado, con cero informes descartados y cero pendientes.
- La lista de incidencias con el alcance devuelve la incidencia de prueba con el estado gestionado esperado.
- El marco de la aplicación esperado se resuelve.
- Un inicio limpio posterior no añade otra ocurrencia.
Recupérate de forma segura
Para investigar incidencias en general, usa
Investigar una incidencia.
