Unidad 7 / 11

Depuración y análisis de fallos con inteligencia artificial

Ganancias:

  • Capacidad para reducir rápidamente las posibles causas fundamentales proporcionando registros de fallos (rastros de pila) a la inteligencia artificial con el código relevante y el contexto del escenario.
  • Capacidad para resolver permanentemente la causa raíz en lugar de validar el diagnóstico de la IA como una hipótesis en el código y probar y silenciar el síntoma.
  • Proteger la privacidad durante la depuración enmascarando datos personales en registros y registros de fallas

Cada aplicación da errores; Lo que distingue a un buen desarrollador es la rapidez con la que encuentra y corrige errores. La depuración móvil (encontrar y solucionar el origen de un problema) es particularmente difícil porque el error ocurre en el dispositivo del usuario, en un entorno que no se puede ver. La mayoría de las veces, todo lo que tiene es un registro de fallas (registro de fallas/rastreo de pila: un desglose técnico de dónde fue la aplicación cuando falló). La IA es extremadamente poderosa para leer estos registros crípticos, enumerar posibles causas y proponer soluciones. En esta unidad aprenderemos a utilizar la IA como “detector de errores”, pero le dejaremos a usted la responsabilidad de verificar el diagnóstico final y solucionarlo.

Lectura del registro de fallos: donde la IA brilla más

Un registro de fallos es un texto largo e intimidante; Un desarrollador sin experiencia no sabrá dónde buscar. La IA analiza este texto en segundos: en qué línea falló, qué excepción se lanzó, cuál es el posible motivo. Los errores móviles comunes son obvios y la IA los reconoce rápidamente: NullPointerException (intentando acceder a un valor nulo), IndexOutOfBoundsException (accediendo a un elemento de lista inexistente) en Android, EXC_BAD_ACCESS (accediendo a la memoria liberada) en iOS, inesperadamente encontrado nulo (forzando un nulo opcional).

Los tipos más comunes de fallos del móvil y sus causas típicas son los siguientes:

Error (excepción)

Plataforma

causa típica

Excepción de puntero nulo

androide

Accediendo a un valor nulo

Excepción IndexOutOfBounds

androide

Accediendo a un elemento de lista inexistente

inesperadamente encontrado nulo

iOS

Forzar el desenvolvimiento de un valor nulo opcional (!)

EXC_BAD_ACCESS

iOS

Accediendo a la memoria liberada

ANR/congelación

androide

Procesamiento largo/pesado en el hilo principal

Flujo de depuración paso a paso:

  1. Recoge el registro. Reúna el registro de fallos, el mensaje de error y los pasos para reproducirlo si es posible.
  2. Dale el contexto a la IA. Dígame no solo el error, sino también el fragmento de código relevante y por qué falló.
  3. Preguntar por posibles causas. “Dime las 3 causas más probables y cómo verificar cada una”.
  4. Verificar. Confirmar el motivo propuesto en el código y las pruebas; No lo arregles adivinando.
  5. Arréglalo y prueba nuevamente. Compruebe que el error realmente haya desaparecido y que no se generen nuevos errores.
Consejo: cuando proporcione el registro de fallos a la IA, incluya también el fragmento de código relevante. Sólo con el seguimiento de la pila la IA hace predicciones generales; Cuando ves el código, la probabilidad de encontrar la línea exacta y la causa real aumenta enormemente. El contexto determina la calidad del diagnóstico.

Trampa de datos personales

Los registros de fallos y los registros suelen contener datos del usuario: correo electrónico, ID de usuario, ubicación e incluso contenido del formulario. Pegar este registro en la IA tal como está es una filtración de datos personales a terceros y es una violación de KVKK/RGPD. Borre (enmascare) las áreas personales antes de enviar la grabación. Además, tenga cuidado de no escribir datos personales en los registros de su aplicación desde el principio; Un buen registro describe el problema pero no revela la identidad.

Precaución: la solución sugerida por la IA puede “silenciar el error” pero no resolver la causa raíz. Por ejemplo, envolver una NullPointerException con una verificación nula detendrá el bloqueo, pero si no descubre por qué el valor es nulo, el error lógico real continuará. Trate la enfermedad, no el síntoma.

Análisis de causa raíz

El objetivo de la depuración profesional no es silenciar el error sino encontrar la causa raíz. Le pregunté a la IA "¿por qué esto podría ser nulo, dónde podría haberse perdido en el flujo de datos?" preguntando: "¿Cómo puedo silenciar esto?" Es mucho más valioso que preguntar. Una vez que se encuentra la causa raíz, se resuelven a la vez docenas de variaciones del mismo error. La IA es buena en este razonamiento en cadena: sigue los datos desde la entrada hasta la salida y pídele que piense en dónde se descomponen.

tres mini casos

Caso 1: 2 horas de trabajo en 10 minutos. Un desarrollador pasó 2 horas buscando un error que solo fallaba en un modelo de Samsung específico. Le dio el registro de fallos (limpieza de áreas personales) a la IA; YZ dijo que el error apunta a un desbordamiento de memoria que ocurre con una resolución de cámara diferente de ese dispositivo. Con la pista, se encontró el motivo en 10 minutos. La IA aceleró la búsqueda, los humanos verificaron la solución.

Caso 2: el error silenciado ha vuelto. Un equipo silenció un bloqueo recurrente utilizando una sugerencia de IA para intentar detectarlo. El bloqueo cesó, pero los usuarios empezaron a quejarse de que "los datos no se guardan"; Debido a que el problema real (conexión a la base de datos) todavía estaba ahí, simplemente se había vuelto invisible. Una vez que se encontró la causa raíz, se resolvieron tanto el bloqueo como la pérdida de datos. Lección: silenciar no es resolver.

Caso 3: datos filtrados en el registro. Una auditoría encontró que los nombres completos y los números de teléfono de los usuarios estaban escritos en los registros de fallos de la aplicación. Los desarrolladores pegaban rutinariamente estos registros en la IA y solucionaban errores; Así que los datos personales llevan meses saliendo a la luz. Se enmascararon los registros y se corrigió el proceso. Lección: la confidencialidad se aplica incluso durante la depuración.

Aviso débil / Aviso fuerte

Mensaje deficiente: "¿Por qué ocurre este error? [seguimiento de pila]"

Mensaje fuerte: "Este bloqueo ocurre en mi aplicación de Android. Contexto: - Mientras lo hago: el usuario agrega al carrito desde el detalle del producto - Solo en algunos dispositivos, modelos con poca RAM - Código relacionado: [ViewModel y parte del repositorio] - Registro de fallas (datos personales borrados): [rastreo de pila] Enumere las 3 causas raíz más probables. Para cada una: 1) Cómo verifico, 2) Solución permanente (sin silenciar). Indique su suposición cuando no esté seguro".

Plantillas copiables

Plantilla de análisis de fallos: "Analice el siguiente fallo. Contexto: [qué está haciendo, qué dispositivo/versión]. Código relevante: [código]. Registro de fallos (datos personales borrados): [rastreo]. Indique las 3 causas fundamentales más probables y verificación + solución permanente para cada una. Marque también las soluciones que silencian el síntoma".

Plantilla de causa raíz: "Este valor aparece [nulo/falso] inesperadamente. Siga el flujo de datos desde la entrada hasta este punto: ¿dónde podría perderse o dañarse? Dígame dónde debo verificar en cada etapa. [código]".

Plantilla de lectura de registro: "Interprete este resultado de registro: ¿qué eventos ocurrieron en orden, dónde está la anomalía, cuál fue el último paso saludable antes del error? [registro: datos personales borrados]"

Plantilla de reproducción: "¿Qué pasos, estados del dispositivo y datos debo intentar para reproducir de manera confiable este error? Enumere las condiciones que podrían desencadenar el error en orden de probabilidad. [descripción]"

Errores comunes

  • Proporcionar seguimiento de pila sin contexto. Sin código ni escenario relevantes, la IA hace predicciones generales.
  • Pegar datos personales en la IA junto con registros. Violación de la confidencialidad; máscara primero.
  • Silenciar el síntoma. Ocultar el fallo con try-catch deja la raíz del problema y crea nuevos problemas.
  • Aplicando la primera sugerencia sin verificarla. El diagnóstico de IA es una hipótesis; Confirmar en código.
  • Intentando reproducirlo en el emulador. Algunos errores solo aparecen en el dispositivo/condición real.
  • No volver a realizar la prueba después de la corrección. La solución podría haber roto algo más; Comprueba la regresión.

En resumen

Una de las áreas donde sobresale la IA es la lectura de registros de fallos y la clasificación de posibles causas; La calidad del diagnóstico mejora enormemente cuando se proporciona el contexto. Pero el diagnóstico y la corrección final pertenecen al ser humano: la sugerencia de la IA es una hipótesis, verificada en código y pruebas. El objetivo no es silenciar el síntoma sino solucionar la causa raíz; El error silenciado suele aparecer de otra forma. Los registros de fallos pueden contener datos personales; Enmascaralo antes de entregárselo a la IA y no escribas datos personales en tus registros desde el principio.

Tarea de aplicación

Tome un registro de fallos que tenga (o la muestra que genere a partir de la IA), oculte cualquier dato personal/distintivo que contenga y entrégueselo a la IA con la "Plantilla de análisis de fallos". Distinguir cuáles de las causas fundamentales de las listas de IA son soluciones reales y cuáles simplemente son silenciadoras. Aplique la solución permanente que eligió y verifique que el error haya desaparecido y que no surjan nuevos problemas.

lista de verificación

  • [] He proporcionado el registro de fallos con el código relevante y el contexto del escenario.
  • [] Oculté datos personales/distintivos en los registros
  • [] Le pedí a AI la causa raíz y la solución permanente, no el silenciamiento.
  • [] Verifiqué el diagnóstico en código y pruebas, no lo apliqué a ciegas
  • [] Después de la corrección, probé que el error había desaparecido y que no había regresión.
  • [] Verifiqué que mi aplicación no escribe datos personales en sus registros