Depuración de apps en Windows Phone 8.1

Visual Studio 2013 Update 2 nos permite desarrollar Windows Store apps para Windows Phone 8.1 con el mismo modelo de programación que utilizamos en Windows 8.1. Podemos utilizar las mismas APIs del Windows Runtime, el mismo XAML, el mismo ciclo de vida, etc. De hecho, con las nuevas Universal apps podemos desarrollar nuestras apps para las dos plataformas al mismo tiempo.

¡Y no solo eso! El Update 2 de Visual Studio también nos permite utilizar en Windows Phone 8.1 las mismas capacidades de diagnóstico que ya utilizábamos en Windows 8.1.

Nota: En el resto de este artículo, cuando hable de apps me referiré a estas nuevas Windows Phone Store apps, y no a las Windows Phone Silverlight apps que desarrollábamos hasta ahora en Windows Phone 8.0 (y que también podemos seguir desarrollando en 8.1).

A continuación puedes encontrar algunas de esas capacidades:

 

Process Lifecycle Management (PLM)

Cuando ejecutamos nuestra app bajo el depurador, nuestro código no se suspenderá ni resumirá como debería de hacerlo según su ciclo de vida. Por eso Visual Studio nos permite seleccionar el evento del ciclo de vida que queremos simular para probar cómo nuestra app lidia con él:

PLM

 

Depuración de llamadas asíncronas

Las llamadas asíncronas aparecen en la ventana de la pila de llamadas y desde ahí podemos navegar a ellas en el código, lo que facilita enormemente su depuración:

clip_image011

También podemos ver los detalles de las tareas asíncronas ( Async Tasks ) por las que se está esperando en la ventana de tareas ( Tasks Window ):

ManagedTasks

ManagedTasks2

 

Inspección de valores de retorno de las funciones en .NET

Además de poder ver los valores de retorno de las funciones en la ventana de Autos, podemos ver también los valores de retorno de las funciones referenciadas en la línea actual y anterior:

 

Volcados de memoria

Cuando estamos depurando nuestra app y nos hemos detenido en el depurador, podemos capturar un volcado de memoria de tipo minidump o minidump with heap. Este volcado refleja el estado de nuestra app en el momento de su captura. Si lo cogemos cuando tenemos algún problema (p.ej. una excepción inesperada) es muy útil para poder analizar el problema más tarde o compartirlo con otro miembro de nuestro equipo o incluso con Soporte Técnico de Microsoft:

Si incluimos la información del heap podremos utilizar el volcado para realizar un análisis de la memoria de nuestra app y detectar así posibles problemas como puedan ser pérdidas de memoria (memory leaks).

Y si nuestra app se está ejecutando sin la presencia del depurador y se cierra de manera inesperada (tenemos un crash), se generará un volcado de memoria de manera automática que podremos encontrar en la carpeta documents>debug del teléfono:

wp_ss_20140613_0001

20140613-095811

Estos volcados de memoria podemos abrirlos en Visual Studio para depurarlos:

dmp open in vs

Y como he comentado antes, si usamos un minidump with heap podemos inspeccionar la memoria de la app:

heap

 

Herramientas de Profiling

Este conjunto de herramientas nos pueden ayudar a encontrar y solucionar problemas de rendimiento. Podremos ver el uso de CPU de cada modulo y función de nuestra app, el uso de memoria, el consumo de energía, así como la capacidad de respuesta de nuestro interfaz de usuario en XAML (el trabajo que está haciendo el hilo de ejecución del interfaz de usuario):

image

image

 

Windows Phone Developer Power Tools

Las Power Tools son tres herramientas que nos permitirán monitorizar la capacidad de respuesta de nuestra app y su consumo de recursos, y depurar sus crashes:

  • Application Verifier. Detecta errores de programación en código nativo.

  • Performance Monitor. Captura métricas de rendimiento en tiempo real y las muestra gráficamente.

  • Performance Recorder. Recopila logs de sistema y los analiza.

powertools

App Verifier in Power Tools

Performance Monitor in Power Tools

Performance Recorder in Power Tools

 

¡Y ahí no acaba la cosa! ¿Quieres depurar componentes nativos de tu app? ¿Tu app está hecha con HTML5 y JavaScript en lugar de C# y XAML? ¿Quieres depurar problemas de tu sitio web en Windows Phone 8.1 con Visual Studio? Puedes encontrar más información sobre todo esto y más aquí:

Phone Debugging in Visual Studio 2013 Update 2

Testing Windows Phone apps

 

Un saludo,

 

Alejandro Campos Magencio (@alejacma)

Technical Evangelist Windows Phone

 

PD: Mantente informado de todas las novedades de Microsoft para los desarrolladores españoles a través del Twitter de MSDN, el Facebook de MSDN, el Blog de MSDN y la Newsletter MSDN Flash.