Tropiezos al realizar debugging en Xamarin y como Superarlos

Luis Pujols
Nov 11 · 4 min read

¡Hola compañeros/as!

Al desarrollar nuestros proyectos, a veces podemos enfrentar errores tediosos o problemas de depuración que pueden no parecer obvios al principio cómo resolverlos, decidí comenzar a recolectar los que he enfrentado y aquí hay algunos con su solución.

Formato de Texto

Debemos tener cuidado al trabajar con el formateo y las diferentes culturas de idioma que soportamos en nuestras aplicaciones porque no todas ellas formatean de la misma manera sus fechas o números, por ejemplo, TimeSpan en diferentes culturas como el árabe, cuando se transforma con toString ocasiona un crash en la aplicación con el error “No calendario válido para una cultura determinada”

Solución:

Podemos resolver este problema, diciéndole a nuestro proyecto que no intente formatearlo utilizando la cultura árabe, sino que mantenga la cultura invariable.

Podemos habilitar esto mediante el envío de un indicador a nuestro método ToString llamado “CultureInfo.InvariantCulture”, que se utiliza cuando se desea un formato de cultura neutral que sea independiente del sistema local de nuestros usuarios.

¿Errores al navegar a la página?

A veces tenemos errores al navegar a una página en nuestra aplicación, que podrían evitarse o rastrearse antes de toparnos con ellos, para esto, siempre nos debemos asegurar de tener la compilación XAML habilitada que nos otorgará los siguientes beneficios:

  • Realiza una comprobación en tiempo de compilación de XAML, notificándonos de cualquier error.
  • Elimina parte de la carga y el tiempo de creación de instancias para elementos XAML.
  • Ayuda a reducir el tamaño del archivo del ensamblaje final al no incluir más archivos .xaml.

A veces también recibimos errores que bloquean por completo nuestra sesión de debug y parece que no podemos ver el problema que lo está causando, en estos casos podríamos usar como último recurso agregar un try-catch en nuestro InitializeComponent(); en el código detrás de nuestra página y asi capturar globalmente cualquier excepción que pueda lanzarse en nuestra página. (esto no se recomienda para la producción, solo agrega esto temporalmente si necesitas depurar un caso como este).

¿Estás usando DI?

Si estamos utilizando la inyección de dependencias en nuestro proyecto, nuestra aplicación también puede bloquearse porque podría haber un problema con una de las dependencias que el ViewModel necesita para inicializar correctamente, para rastrear cuál podría ser, podemos hacer lo siguiente:

  • Comente todas las dependencias en ViewModel
  • Agregue nuestras dependencias lentamente al constructor 1 por 1
  • Verify that all our dependencies are well register

Si todas las dependencias están bien, y nuestro XAML y el código .cs también, luego debemos comenzar a debug las propiedades en nuestro ViewModel. Simplemente podemos comentar todas las propiedades y comenzar a descomentarlas lentamente y verificar cuál está causando el problema.

Si encontramos una propiedad que nos da el problema, verificamos cómo lo estamos inicializando, si lo estamos asignando de inmediato, intentamos inicializarlo en el constructor y ver si funciona, si no verificamos cómo lo estamos utilizando en el XAML o formateándolo para salida a la página.

Herramientas que nos pueden apoyar en el proceso de depuración

Siempre es bueno tener herramientas que pueden apoyarnos en el proceso de debug de nuestras aplicaciones y aquí hay algunas que recomiendo si aún no las estas usando.

XAMARIN.FORMS.DEBUGRAINBOWS

Si alguna vez haz creado un diseño y no obtuviste el resultado esperado cuando compiló la aplicación, a veces puede ser realmente tedioso encontrar qué componente de la interfaz de usuario no está configurado correctamente, por esto nuestro XamBuddy Steven Thewissen, ha creado este increíble paquete, que agrega un modo de debug muy colorido a cada una de nuestras ContentPage que nos permite ver de inmediato dónde se encuentran todos nuestros elementos.

HTTPTRACER

A menudo nos encontramos tratando de descubrir cómo configurar una forma adecuada de ver las solicitudes y la información de respuesta que nuestro software intercambia con los servidores. Y es por eso que nuestros XamBuddies Daniel Causer, Dylan Berry y Chase Florell han creado esta gran libreria la cual se llama Http Tracer y permite escribir información nuestras solicitudes y respuestas Http en nuestra consola. ¡Haciéndonos la vida más fácil al depurar llamadas Http!

Made with ❤ by Pujolsluis

English Post:

Luis Pujols

Written by

Software Engineer, currently working as Xamarin Mobile Developer🙈, ❤’s sharing knowledge, food, sports, learning new things, and growing the community!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade