Cómo Encontrar y Corregir errores en Software Comercial en Windows

De acuerdo con Wikipedia, «Un error de software es un error, falla, fallo o falla en un programa de computadora o sistema que causa que produzca un resultado incorrecto o inesperado, o que se comporte de manera no intencionada, eventualmente bloqueando la aplicación. El proceso de corrección de errores se denomina «depuración» y a menudo utiliza técnicas o herramientas formales para identificar errores .»

La mayoría de las veces, los errores se pueden reproducir en un entorno de desarrollo y corregirse antes de enviar una versión a producción. Pero a veces los errores dependen del entorno o perfil particular de los usuarios, por ejemplo, el uso de caracteres especiales en el nombre de una carpeta, lo que dificulta la comprensión de la causa raíz de un error. Los peores errores requerirán el apoyo del usuario para configurar una sesión de pantalla compartida con el fin de ver a un usuario reproducir un error.

En Dashlane, el equipo de Windows utiliza varias herramientas para encontrar y reproducir errores:

  • Registros técnicos para detectar dónde surgen los problemas y ayudar a solucionarlos, a veces requieren varias iteraciones e interacción con el usuario que experimenta un problema
  • Microsoft Process Monitor y Process Explorer, dos herramientas gratuitas que identifican instalaciones defectuosas o un entorno dañado

Recientemente, Microsoft introdujo una nueva versión de otra herramienta de desarrollo, WinDbg. Esta aplicación fue portada a una aplicación UWP, está disponible gratuitamente en Microsoft Store y viene con una característica muy agradable y útil: TTD, o Depuración de viajes en el tiempo. Piense en un momento en el que tuvo que corregir un error muy difícil de reproducir que estaba sucediendo solo en una máquina específica. O piense en el tiempo que pasó instalando un entorno de desarrollador en esa máquina—si pudiera. Y luego piense en cuántas veces tuvo que iniciar su aplicación en modo de depuración para reproducir el error, y luego perdió la línea dañada al golpear accidentalmente F5 en lugar de F11. TTD convierte esto en pan comido, ya que solo necesita grabar el error una vez para poder reproducirlo una y otra vez, tanto hacia adelante como hacia atrás.

La depuración de viajes en el tiempo con WinDbg

TTD es una solución de depuración inversa. Consta de 3 pasos:

  1. Registre la aplicación o el proceso en la máquina que puede reproducir el error. Use WinDbg con derechos de administrador e inicie un ejecutable, o adjúntelo a uno que ya se esté ejecutando para registrar su seguimiento. El resultado es un archivo (.extensión de ejecución) que contiene toda la información para reproducir el error. Por esta razón, en Dashlane solo podemos usarlo para depurar errores que ocurren antes del inicio de sesión para no recopilar información confidencial de los usuarios.
  2. Vuelva a reproducir el trazado grabado hacia adelante y hacia atrás tantas veces como sea necesario para comprender el problema. Una vez cargado, WinDbg crea un índice de la traza, que proporciona una búsqueda de memoria completa y rápida. El archivo grabado se puede cargar en cualquier máquina; por lo general, abrimos en una máquina desarrolladora, donde podemos cargar código fuente y símbolos PDB. De esta manera, podemos reproducir el seguimiento mientras ejecutamos código en nuestro IDE con registros de proceso y memoria de la máquina grabada. (Asegúrese de que el código fuente y los símbolos coincidan con la versión del proceso grabada.)
  3. Analice agregando puntos de interrupción, ejecute consultas para identificar problemas de código comunes y obtenga acceso completo a la memoria y a los locales para comprender lo que está sucediendo.

Ejemplo

Supongamos que ha escrito y construido una aplicación de consola simple.

void GuiltyFunction(int a, int b, int c)
{
int x = a + b + c;
int y = 0;
y = x / b;
}
int main()
{
int a = 10;
int b = 0;
int c = 3;
GuiltyFunction(a, b, c);
return 0;
}

Vamos a suponer que la aplicación (TestTTD.exe) y el archivo de símbolos (TestTTD.pdb) están en C:\TestTTD\bin, y el código fuente está en C:\TestTTD\src.

Grabar

  1. Abrir WinDbg con derechos elevados.
  2. En la ficha Archivo, seleccione Iniciar ejecutable (avanzado). En el campo Ejecutable, escriba C:\TestTTD\TestTTD.exe. Compruebe el proceso de registro con la depuración de viajes en el tiempo, establezca el directorio de salida en una ruta de acceso existente y con escritura y, a continuación, haga clic en Aceptar.
  3. A medida que la aplicación se bloquea, WinDbg guarda un archivo de seguimiento (.ejecutar extensión) y registra la ubicación mientras la carga.
  4. Detenga el depurador y abra la ubicación del archivo de seguimiento.

Repetición

  1. Abrir WinDbg.
  2. En la pestaña Archivo, seleccione Configuración en la barra lateral izquierda. Seleccione Configuración de depuración, agregar C:\TestTTD\src al campo de ruta de origen y C:\TestTTD\bin al campo de ruta de símbolos. Haga clic en Aceptar para guardar los cambios.
  3. En la ficha Archivo, seleccione Abrir archivo de seguimiento y busque el archivo de seguimiento creado en el paso de registro.

Analizar

  1. Una vez cargado el archivo de seguimiento grabado en WinDbg, agregue un punto de interrupción para detener y analizar el estado de la aplicación. Cargue un archivo de script desde la pestaña Fuente y, a continuación, haga clic en el lado izquierdo de la fila del punto de interrupción deseado. Pulsa F5 para llegar al punto de interrupción.
  2. Ahora pulse F10 para pasar al otro lado, como en una sesión de depuración de Visual Studio. Haga clic en Paso atrás para correr hacia atrás.

Conclusiones

Al depurar código de producción y errores difícilmente reproducibles, WinDbg y su depuración de viajes en el tiempo son una gran herramienta para desarrolladores que pueden ayudar a ahorrar tiempo y recursos al grabar la aplicación defectuosa solo en el entorno afectado y brindarle la capacidad de reproducirla en cualquier lugar. Para obtener más información, visite el blog de Microsoft o vea su demo en el sitio web de MSDN Channel 9.

Leave a Reply

Tu dirección de correo electrónico no será publicada.