Hay quien dice que una Feature es un Bug con diplomacia. Probablemente haya más de verdad en esa afirmación de lo que a muchos Project Managers les gustaría admitir. Sea como fuere, lo cierto es que como desarrolladores tenemos la misión de escribir el código más limpio posible introduciendo los menores efectos laterales que podamos. Pero no nos engañemos, antes o después habrá bugs. Este es el primero de una serie de posts en los que quiero hablar de algunas herramientas de depuración que nos pueden ser muy útiles en nuestra caza de brujas.

En este primer post hablaremos de algunas características de depuración de Visual Studio 2013 que quizá no todos conozcamos o usemos lo frecuentemente que deberíamos. Aquí sólo resalto algunas de las características de depuración, pero hace algún tiempo ya publicamos un repaso a las Novedades de Visual Studio 2013 para Developers.

Inspección del valor de retorno

Adoro las expresiones lambda. Me encanta la potencia de la programación funcional desde el momento en que ví la primera línea de Prolog en la universidad. Aun así, hay que admitir que no conlleva una depuración sencilla. Uno de los principales inconvenientes a los que nos enfrentábamos al usar expresiones lambda en C# era lo difícil que resultaba depurar expresiones encadenadas.

Imaginemos el siguiente código:

public MainPage()
{
    this.InitializeComponent();
    var value = Substract(10, AddFour(4));
}

Func<int, int> AddFour = x => x + 4;
Func<int, int, int> Substract = (x, y) => x - y;

 

Si detectásemos un error en esa zona de código y quisiéramos inspeccionar los valores que retornan las funciones lambda, tendríamos que crear variables auxiliares sólo para la depuración. Esto, además de ser un engorro, seguramente produciría código sucio que quizá luego no se elimine y puede que incluso la introducción de nuevos errores.

Visual Studio 2013 permite la inspección de los valores de retorno de las funciones lambda, incluso si están encadenadas. En este caso la venta a autos nos proporcionaría la siguiente información:

image

CodeMap

CodeMap nos permite crear diagramas de nuestro código. Es particularmente útil cuando nos enfrentamos a código realizado por otras personas o cuando intentamos comprender la interacción entre varios módulos del mismo sistema.

image

Por si aún no resultaba lo suficientemente atractivo, es capaz de generar gráficos en tiempo de ejecución para comprender mejor el estado de la aplicación que estamos debugeando.

image

Performance and Diagnostics

Es relativamente simple reconocer un problema de rendimiento (a menos que solo se dé bajo ciertas condiciones muy específicas). Sin embargo, a veces no es tan obvio identificar qué porción de código está produciendo ese impacto en el rendimiento o de qué forma. Para ayudarnos en estos casos, Visual Studio incorpora las herramientas Performance and Diagnostics.

image

Estas herramientas están disponibles a través del menú Debug de Visual Studio y se presentan mediante un asistente, así que nos facilitan al máximo lanzar los tests adecuados a nuestro desarrollo. Además están especializadas en cada lenguaje, así que siempre obtendrás el máximo de información.

image

En próximos artículos seguiremos contando más características de Visual Studio y otras herramientas que nos ayudarán en la depuración. ¿Tienes alguna característica favorita que no hayamos contado? ¿Estás enamorado de X herramienta para hacer debugging o profiling de tus desarrollos? ¡Déjanos un comentario y le daremos un repaso!

 

Un saludo,

Pablo Carballude (@Carballude_es)