http://www.conclase.net/c/devcpp.php?art=depurar Depurar programas



Documentos relacionados
En la parte inferior de la pantalla se podrá ver el estado de la última copia y la fecha y hora actual.

Introducción al Depurador de Dev-C++

Funciones básicas del depurador

ENTORNO DE DESARROLLO Y COMPILACIÓN DE PELLES C

Sistema de Gestión y almacenamiento de archivos en el Campus Virtual

Fundamentos de Ordenadores. Depurar programas usando Nemiver

GUIA DE LABORATORIO # 2 ENTORNO DE DESARROLLO Y COMPILACIÓN DE UN PROGRAMA EN C

OPEN OFFICE: Unidad 3

Dpto. Lenguajes y Ciencias de la Computación E.T.S.I. Telecomunicación. Laboratorio de Programación Uso del depurador en Dev-C++

DIAGRAMAS DE FLUJO: DFD

Manual de Excel Avanzado

UNIDAD 5. calc OPCIONES AVANZADAS. CURSO: LibreOffice

VB - Access Manual Visual Basic para Aplicaciones del Access 2000

FUNDAMENTOS DE PROGRAMACIÓN. Practica 1. Iniciando con C#

A. Integración del certificado Digital a Outlook Express

ACCIONES Photoshop. Primero explicaremos brevemente que son las Acciones de Photoshop y cómo utilizar esta interesante utilidad. Acciones Photoshop

MANUAL DE USO DE TIENDA ONLINE

ENSAMBLADO DEL PROGRAMA

Microsoft Word. Microsoft Word 2013 SALOMÓN CCANCE. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Guía de obtención e instalación del Certificado digital de usuario emitido por CamerFirma

EJEMPLOS LENGUAJE C. DECLARAR VARIABLES Y ASIGNARLES CONTENIDO. PROGRAMA BÁSICO INT MAIN MOSTRAR MENSAJE. (CU00511F)

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 3: Elementos esenciales del formulario

Manual PABLOSKY. Shop Online 1.0. Área Clientes

UNIDAD 4. MODIFICAR TABLAS DE DATOS

POWERT POINT Tema 2. Para cambiar el color de fondo y los efectos de relleno de las diapositivas de una presentación:

En este apartado, veremos cómo realizar un cierre manual y cómo realiza el sistema un cierre automático.

1. INTRODUCCION. Logger 2

Unidad 5. Tablas. La celda que se encuentra en la fila 1 columna 2 tiene el siguiente contenido: 2º Celda

Manual de uso y manejo del Escritorio UTPL : Windows 8 Manual de descarga de Ebooks

Curso de Windows 95/98 CTCV

La Herramientas Smart Board

Interfaz Web de Correo adaptada a dispositivos móviles

5.1. Eliminar filas duplicadas

EJERCICIO 36 DE WORD.

BREVE DESCRIPCIÓN DEL ENTORNO DE PROGRAMACIÓN DE VISUAL LISP

C. E. I. P. LAS VIÑAS. Bollullos del Cdo. (Huelva) Centro TIC/DIG. Las ventanas

06. GESTIÓN DE PROCESOS Y RECURSOS

Por último se confirmará la búsqueda pulsando la tecla Enter, o bien pulsando con el ratón en el botón de Buscar

Guía de Modificación de un Borrador de Pagos Q34. Es posible modificar o duplicar un borrador.


Configuración del Ratón

Calc I Primeros pasos: Entorno de trabajo, celdas y. rangos

DESCARGAR E INSTALAR EL NAVEGADOR. VENTAJAS DE GOOGLE CHROME. FIREFOX, TAMBIÉN ENTRE LOS MEJORES (CU00710B)

Guía Rapida Herramienta Programación de Riego

Capítulo 1: Tablas de Excel

Funcionalidades básicas del docente

Curso Completo de Visual Basic 6.0

LA PIZARRA SMARTBOARD

Concepto: Cómo se hace: Ahora practica

REDGORDO FICHERO DE AYUDA DEL PROGRAMA REDGORDO

HERRAMIENTAS DE LA PIZARRA DIGITAL

MODIFICAR TABLA DE DATOS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

MODIFICAR TABLA DE DATOS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Autores: José Manuel Marcos y David Romero MANUAL DE TEMPUS

INTRODUCCIÓN A IMPRESS 1. INTRODUCCIÓN

Manual de OpenOffice Impress

[Informes Activos-Manual de Usuario]

2014 I 1 Informática Básica Eliminar Virus USB MS-DOS

APLICACIÓN INVENTARIO de PAPELERAS

MANUAL DE USUARIO SAP R/3 CONTABILIZACIONES DE DEUDORES

Curso de Delphi (y VI)

La ventana del Explorador de Windows 7

Lector Daisy para móvil Manual de usuario

Procesos e Hilos en C

Instalación Componente Cliente

Microsoft Word. Microsoft Word 2013 SALOMÓN CCANCE. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

MANUAL DE USO ÁREA RESTRINGIDA DE ASOCIADOS

1.1. Iniciar Excel 2010

3. El escritorio y la barra de tareas

Estilos y temas 1. CREAR UN ESTILO. amos a ver una serie de herramientas que te ayudarán a aplicar fácilmente formatos y diseños a tus documentos.

PowerPoint 2010 Edición del contenido

Firma electrónica en Mac OS X

MICROSOFT WORD. Edición básica de documentos

POWER POINT Tema 1. Para salir de PowerPoint (suponiendo que se tiene abierto) puede:

Instrucciones: desacoplamiento Walzer con la CS2 a partir de la versión de software 3.5

APLICACIONES MICROINFORMÁTICA Apuntes de WORD 2.007

Las listas son una sucesión de cero o más elementos. Esta es una definición muy simple y que no aclara demasiado en términos informáticos.

LINCE SISTEMA DE FACTURACIÓN ON-LINE DE ASISA...

Manual de usuario Mensajería Centro Virtual de Educación

Elementos esenciales de Word

INSTITUCIÓN MANUEL MARÍA SÁNCHEZ Tecnología e Informática Word

GUIA PARA SOLUCIONAR LOS PROBLEMAS DE ACCESO A LA SEDE ELECTRÓNICA.

GUÍA DE USO E INSTALACIÓN

Apunte de Tabulaciones Microsoft Office Word Tabulaciones.

1.- CREACIÓN DE CONSULTAS.

Transcripción:

Depurar programas Siempre hay que tener en cuenta que los ordenadores hacen sólo aquello que nosotros les decimos que hagan: si los programas no funcionan es porque no los hemos diseñado bien o porque hemos cometido algún error, y no porque el compilador o el ordenador no funcionen correctamente. Debemos tener siempre esto en mente, y una vez que se nos ha pasado el mal humor después de analizar y pensar durante mucho tiempo sobre nuestros algoritmos y programas, sin obtener resultados, debemos reflexionar y volver al problema. Como programadores debemos tener la sangre fría y reconocer que se trata de un error nuestro. Es cierto: no siempre es así, a veces algunas funciones de librerías que usamos pueden tener bugs, pero esto suele ser una excepción. Un modo de buscar errores de programación es convertirnos en un ordenador y ejecutar el programa que hemos escrito nosotros mismos. Esto suele ser lento y laborioso. Además, no nos engañemos, nosotros sí cometemos errores al ejecutar programas, cosa que no suele hacer el ordenador. Este sistema, salvo en el caso de programas sencillos, no suele funcionar. Otro método es partir de datos conocidos y ejecutar el programa, para llegar a resultados también conocidos, o al menos que se puedan calcular. Frecuentemente se puede deducir dónde está el error en función de los errores obtenidos. Este método tampoco es demasiado útil con programas que manejen muchas variables o parámetros. Otras veces podemos usar los mensajes de error que nos proporciona el sistema, pero en general (al menos a mi me pasa), esos mensajes no suelen arrojar mucha luz. Otra opción, que es la que nos ocupa en este artículo, consiste en depurar el programa usando una aplicación creada con este fin. Me estoy refiriendo al "debugger" o depurador, que normalmente se incluye en casi todos los entornos de programación. Un depurador es una aplicación que permite colocar puntos de parada, inspeccionar variables o ejecutar un programa paso a paso, con el fin de buscar errores. Durante el periodo de aprendizaje, esta es mi opinión, no se debería abusar de los depuradores. Creo que es mejor, para asentar bien las bases, depurar los programas usando

cualquiera de los métodos anteriores, o incluso, mientras se hacen programas sencillos, pocas veces debería ser necesario depurar programas, y se deberían centrar los esfuerzos en un diseño correcto. Sin embargo, a medida que nuestros programas se van complicando, las situaciones no previstas en nuestro diseño tienen a hacerse más frecuentes. El diseño es algo que hay que entrenar y perfeccionar, y un depurador puede ayudarnos a corregir nuestros errores de diseño. Con el tiempo veremos que cada vez los necesitamos menos, y que dedicamos más tiempo a un buen diseño y menos a poner "parches" a nuestros programas. El depurador de Dev-C++ Dev-C++ contiene un depurador, no demasiado avanzado, pero sí lo suficiente como para resultar útil. Los programas no pueden ser depurados siempre, antes deben cumplir determinadas condiciones. La primera es que se pueda obtener un ejecutable. Si no llegamos a eso los errores serán de compilación o de enlazado, y un depurador no tiene sentido hasta que se solucionen todos esos problemas. La segunda condición es que el fichero ejecutable contenga la información para la depuración. Un ejecutable que no contenga esa información se puede depurar, pero sólo en ensamblador, y no con el depurador que incluye Dev-C++. La información de depuración consiste en el propio fichero fuente, y los lazos que unen cada una de las instrucciones del programa y variables, con las resultantes de compilar el programa, de modo que el depurador pueda saber a qué instrucciones de código máquina corresponden cada instrucción de C/C++. Y también a qué direcciones de memoria corresponde cada variable, asi como su tipo. Para que el compilador añada esa información al programa ejecutable hay que indicar al enlazador que lo haga. Dev-C++ es lo bastante "listo" como para hacer esto de forma automática, pero no está de más que sepamos cómo hacerlo nosotros. Sobre todo porque dicha información aumenta considerablemente el tamaño del ejecutable, y una vez depurado, deberíamos eliminarla para crear una versión final. Para hacer que el enlazador incluya o no la información del depurador debemos acceder a las "Opciones del Compilador", que se encuentran en el menú de "Herramientas", y, como se ve en el siguiente gráfico, en la pestaña "Configuración" del cuadro de diálogo de "Opciones del Compilador", en las opciones del "linker". Si activamos la opción "Generar Información de Debug", dicha información se añadirá la próxima vez que compilemos y enlacemos el programa con éxito. Si la desactivamos, se eliminará, del mismo modo, después de compilar y enlazar el programa.

La tercera condición es colocar algún punto de parada en la parte del programa que queremos depurar. Los puntos de parada indican al depurador que detenga la ejecución del programa y devuelvan el control al usuario, es decir, a nosotros. Una vez detenido el programa podremos inspeccionar variables, modificarlas, continuar la ejecución, o seguir ejecutando el programa sentencia a sentencia. Colocar un punto de parada Hay dos formas de activar un punto de parada, breakpoint. La más sencilla es pulsar con el ratón en la zona del margen junto a la línea en la que queremos situar el pulto de parada. Otra forma es situar el cursor en la línea en que queremos situar el punto de parada y usar el menú "Depurar->Añadir/Quitar punto de Ruptura". En cualquiera de los casos, se visualizará la línea con fondo rojo, y un icono rojo con una 'V' verde en su interior en la zona del margen:

Para eliminar un punto de parada se procede del mismo modo. Ejecutar un programa en modo de depuración De nuevo hay varias formas de hacer esto. Una consiste en pulsar el icono en forma de 'V' en la barra de herramientas. El mismo icono está en la parte inferior, en la pestaña de "Depurar", al activar esta pestaña podemos acceder al icono de "Depurar", por último, también podemos hacerlo mediante el menú "Depurar->Depurar", o por el atajo, pulsando la tecla [F8]. En cualquier caso, el programa se ejecutará normalmente hasta alcanzar un punto de parada. En ese momento el control vuelve al entorno de Dev-C++ y se muestra la línea de ejecución actual con fondo azul y con un icono en forma de flecha en el margen: Otra variante de punto de parada consiste en situar el cursor en la línea hasta la que queremos que se ejecute el programa y pulsar "Ir al cursor". Esto trabaja igual que si hubiéramos situado un punto de parada en esa línea, y lo borráramos una vez alcanzado. Pero cuidado, el resto de los puntos de parada siguen activos, si se alcanza uno de ellos antes que la posición del cursor, el programa parará en ese punto. Parámetros Si nuestro programa necesita recibir parámetros desde la línea de programa, podemos suministrarlos mediante la opción del menú "Depurar->Parámetros...". Esto nos permite simular una orden desde la consola con la lista de parámetros que prefiramos. Ejecución paso a paso

A partir de aquí podemos optar por ejecutar el programa hasta el siguiente punto de parada, pulsando "Saltar paso", o reanudar la ejecución paso a paso o ejecutar la siguiente sentencia, mediante "siguiente paso". La diferencia entre "siguiente paso" y "paso a paso" es sutil pero importante. La primera opción ejecuta cada sentencia como un único paso, por ejemplo, si tenemos una sentencia como: for(int i=0; i < 12; i++) x[i] = i; "Siguiente paso" la ejecutará de una sola vez, mientras que "paso a paso" ejecutará cada una de las iteraciones. Si la sentencia contiene una llamada a una función, "siguiente paso" la ejecutará como una sentencia única, y "paso a paso" transferirá la ejecución al interior de la función y ejecutará sus sentencias paso a paso. Inspeccionar variables Mientras la ejecución está detenida podemos consultar el valor de las variables accesibles desde el punto de ejecución actual, por ejemplo:

En este ejemplo hemos añadido algunas variables a la lista de variables inspeccionadas, concretamente la variable x, que es un puntero a int, la variable cadena que es un array de caracteres y el elemento 0 del array dinámico x. Añadir variables a la lista es fácil, basta con pulsar en "Añadir watch" y escribir el nombre de la variable a visualizar. Igual de sencillo es eliminarlas: seleccionamos la variable a borrar y pulsamos sobre el icono "Quitar watch". Existe otra herramienta, aunque parece que en la versión actual de Dev-C++ aún no está muy conseguida. Consiste en modificar el valor de alguna de las variables observadas. Pulsando sobre la variable en la lista, con el botón derecho aparece un menú. La segunda opción tiene un icono con un martillo, "Modificar valor". Detener la ejecución Si el programa ha entrado en una situación en la que hemos perdido el control, o sencillamente, no nos interesa continuar depurando, podemos detener la ejecución mediante la opción "Parar ejecución", ya sea en el menú de "Depurar" o en la zona de depuración inferior.