Tutorial sobre Windbg [Parte VI]

En la quinta parte de este tutorial introductorio de depuración de aplicaciones vimos algunos comandos de Windbg que nos permiten mostrar información sobre la pila de ejecución en un determinado momento, una tarea bastante cotidiana en el ámbito de la depuración. En esta parte veremos algunas otras tareas relacionadas con la pila de ejecución y los correspondientes comandos de Windbg que nos permite llevarlas a cabo. Puede darse el caso de que necesitemos saber el espacio que ocupa cada marco de pila de una traza de pila concreta. Para ello podemos obtenerlo de dos formas: Aplicando la teoría que vimos … Continue reading Tutorial sobre Windbg [Parte VI]

Tutorial sobre Windbg [Parte V]

A continuación vamos a ver técnicas para examinar de manera útil y detallada una de las estructuras de datos más importantes: la pila. ¿Qué es una pila? La pila es una de las estructuras de datos más sencillas que existen. Consta básicamente de dos operaciones: apilar, que introduce elementos en la pila, y desapilar, que quita el elemento que ocupa la primera posición (la cima) de la pila, siempre y cuando tenga alguno. Como ve, se asemeja a una pila de platos o una pila de libros. Los primeros elementos que llegan a la estructura son los últimos que la … Continue reading Tutorial sobre Windbg [Parte V]

Tutorial sobre Windbg [Parte IV]

En esta cuarta parte del tutorial sobre Windbg, se van a tratar algunos comandos básicos para conocer el estado de la máquina que estamos depurando. El primer aspecto que se va a tratar es el estado del banco de registros. Estado del banco de registros Toda computadora dispone de un conjunto compuesto por un cierto número de registros. El número de registros y su tamaño (en número de bits) es algo que depende de la arquitectura de la plataforma. Los registros principalmente sirven para almacenar de manera temporal pequeños valores que se van necesitando durante la ejecución del código máquina, … Continue reading Tutorial sobre Windbg [Parte IV]

Tutorial sobre Windbg [Parte III]

En el anterior artículo vimos cómo abrir nuestra aplicación en modo usuario dentro de Windbg y comprendimos mejor qué es lo que ocurre cuando este se hace cargo de nuestra aplicación. Ahora tenemos a nuestra disposición una ventana con salida de texto y una caja de entrada de comandos pero, ¿qué podemos hacer? Es importante saber que podemos manejar la ventana de Windbg e introducir comandos en su caja de texto porque nuestra aplicación está detenida debido a la excepción STATUS_BREAKPOINT que se recibe por defecto nada más abrir la aplicación en Windbg. Así pues, lo primero que buscamos es una forma … Continue reading Tutorial sobre Windbg [Parte III]

Tutorial sobre Windbg [Parte II]

En la primera parte de esta serie de artículos aprendió a instalar Windbg y a configurar un aspecto básico, los símbolos de depuración. En este artículo veremos cómo configurar otros aspectos menores de Windbg, pero que le pueden resultar necesarios, y depuraremos la primera aplicación en modo usuario. Configurar la ruta de código fuente Si está depurando una aplicación que no haya desarrollado, es probable que no disponga del código fuente de la misma; sin embargo, si estuviera depurando una aplicación de la que dispone el código fuente, es muy buena idea configurar Windbg para que sea capaz de usar toda … Continue reading Tutorial sobre Windbg [Parte II]

Tutorial sobre Windbg [Parte I]

A petición de un buen número de personas que me han escrito a través del blog, he decidido comenzar un tutorial sobre depuración de aplicaciones y el sistema operativo Windows usando Windbg. A través de este tutorial espero cubrir conceptos introductorios (tales como aprender a configurar Windbg, saber qué comandos son los más destacados y para qué sirven, etc.), hasta llegar a conceptos más avanzados que impliquen la aplicación de la teoría al análisis y solución de problemas reales. Se van a tratar tanto la depuración de volcados de memoria (algo que se conoce como postmortem debugging), como la depuración … Continue reading Tutorial sobre Windbg [Parte I]