FUNDAMENTOS DE PROGRAMACIÓN Asignatura correspondiente al plan de estudios de la carrera de Ingeniería Informática

Anexo Unidad 5 Introducción a las Herramientas de Desarrollo Página 1/15 Universidad Nacional del Litoral Facultad de Ingeniería y Ciencias Hídrica

3 downloads 28 Views 1MB Size

Story Transcript

Anexo Unidad 5

Introducción a las Herramientas de Desarrollo

Página 1/15

Universidad Nacional del Litoral Facultad de Ingeniería y Ciencias Hídricas Departamento de Informática

FUNDAMENTOS DE PROGRAMACIÓN Asignatura correspondiente al plan de estudios de la carrera de Ingeniería Informática

ANEXO 2 Herramientas de Depuración

Ing. Pablo Novara - 21/04/2010

Anexo Unidad 5

Introducción a las Herramientas de Desarrollo

Página 2/15

Herramientas de Depuración Herramientas a utilizar La depuración, según las etapas de resolución de problemas planteadas al comienzo de la asignatura, es el proceso de encontrar y corregir errores (de lógica, no de sintaxis) en un programa. Existen herramientas que nos permiten observar detalladamente como evolucionan los datos a medida que se avanza el programa, y qué acciones son las que en verdad se ejecutan. Es decir, con estas herramientas podemos pausar la ejecución en un punto dado, avanzar paso a paso observando por qué lineas del código va pasando el control del programa, observar cuanto valen determinadas variables en cada paso, etc1. La mayoría de los IDEs actuales incluyen herramientas para la depuración. En esta guía se utilizará el IDE ZinjaI para los ejemplos presentados, pero los conceptos generales son aplicables también en cualquier otro entorno2. Es importante destacar que más allá de la idea general que dicta que la depuración sirve para encontrar y corregir errores; en muchos casos la depuración será también de utilidad aún cuando el programa funcione correctamente. Por ejemplo, cuando debemos comprender como funciona un código escrito por otra persona. Con esta guía se busca fomentar el uso del depurador como una herramienta didáctica y como un complemento indispensable para el estudiante. Si bien en los primeros pasos, la falta de experiencia con el lenguaje y el compilador puede causar confusión, una vez dominadas las habilidades básicas de depuración se acortarán sensiblemente los tiempos de desarrollo y se podrá aprovechar al máximo la capacidad del IDE. Además, para proyectos de mayor tamaño (como el proyecto final de la asignatura), en muchos casos resulta imposible realizar un seguimiento mental o una prueba de escritorio debido a la complejidad del código y los múltiples caminos de ejecución. En esta guía se desarrollarán tres ejemplos prácticos ilustrando el manejo básico de las facilidades de depuración. Cada ejemplo debería realizarse como complemento a la práctica de una unidad de la asignatura. Es decir, el primer ejemplo corresponde a la práctica de la unidad 7 (estructuras de control), el segundo a la práctica de la unidad 8 (funciones), el tercero a la practica de las unidades 9 (arreglos), y 10 (estructuras). Para evitar mayores confusiones, se recomienda que no avance con ejemplos correspondientes a unidades que aún no han sido dadas en las clases prácticas o teóricas, porque contienen códigos y conceptos que tal vez no comprenda.

1 El tipo de depuración que se presentará aquí se puede catalogar como depuración a nivel de código fuente, dado que el programador dispone del código fuente del programa a depurar y controla el proceso utilizándolo como referencia. No es el único tipo de depuración que existe, pero sí el más utilizado durante el desarrollo de un software. 2 ZinjaI, funciona en realidad como una interfaz visual para gdb, el verdadero depurador.

Anexo Unidad 5

Introducción a las Herramientas de Desarrollo

Página 3/15

Consideraciones Previas En el proceso de compilación, el código fuente se traduce en código de máquina. Sabemos que teniendo sólo el ejecutable (código de máquina) es imposible recuperar el código fuente, pero aún teniendo ambos (ejecutable y fuentes) no es trivial relacionar ambos códigos y saber por ejemplo, qué dirección de memoria le asignó el sistema operativo a una variable, o qué conjunto de instrucciones de máquina se corresponden a una linea de código. Es por esto que para que la depuración desde el código fuente sea posible, el compilador debe introducir dentro del ejecutable información adicional que le permita establecer esta relación. Este ejecutable (llamado común mente versión Debug), por lo tanto, será más grande, y eventualmente más lento 3 que el ejecutable final que el programador entregará al usuario una vez finalizado el proceso de desarrollo (versión Release). Además, una vez compilado el ejecutable en versión Debug, se debe recordar que si se modifican los fuentes, se pierde la relación que existe entre éstos y el código de máquina del ejecutable, y en este caso el depurador podría mostrar información incorrecta. Otro detalle a tener en cuenta, es que para poder controlar correctamente un programa, en muchos casos, el depurador debe encargarse de cargarlo y ejecutarlo, por lo que el IDE presentará generalmente dos formas de ejecución: la ejecución normal, y la ejecución para depuración (que será más lenta aún para el mismo ejecutable).

3 La inclusión o no de la información de depuración no es la única diferencia entre las compilaciones Debug y Release. Hay otras diferencias (como niveles de optimización) que afectan de forma más perceptible la velocidad de ejecuación del programa.

Anexo Unidad 5

Introducción a las Herramientas de Desarrollo

Página 4/15

Ejemplo Nro 1: Control básico e inspección de variables Paso 0: El programa ejemplo Para llevar a cabo este ejemplo utilizaremos el siguiente código: #include using namespace std; int main(int argc, char *argv[]) { unitbuf(cout); int cant,n; coutcant; double sum=0; for (int i=0;i

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.