Asignatura "Fundamentos de Informática"

Ingeniería Técnica Industrial

Escuela Universitaria Politécnica


El Compilador y el Debugger


El Compilador es un programa que permite traducir un programa escrito en un lenguaje de alto nivel (como C, C++, Pascal, Módula-2, Ada...) a lenguaje máquina o código binario, que es el único que puede entender y ejecutar un ordenador.

Hay muchos tipos de compiladores y cada uno tiene sus propias características, opciones y formas de uso. Muchos compiladores, por ejemplo, incorporan un entorno que facilita la programación. Este entorno suele ser similar a un editor de textos con algunos menús especiales de compilación. En general, esto facilita las tareas de leer y grabar programas y puede tener otras ventajas: facilitar el sangrado de programas, poner en colores ciertas partes del programa (palabras reservadas, comentarios, constantes...), ofrecer ayuda o información sobre el lenguaje y el compilador y muchas más cosas. No obstante, un programa en C es un fichero de texto y podrá, por tanto, escribirse con cualquier editor de textos que lo permita, como el Bloc de notas (NotePad) o el mismo WordPad. Por supuesto, una vez escrito el programa necesitamos el compilador para que pueda ser ejecutado.

Intente configurar y entender las opciones básicas del compilador desde el principio, pues le permitirán ganar mucho tiempo. Desde el principio le recomendamos que cree un directorio de trabajo (por ejemplo C:\PRACTICA) y utilice ese directorio para guardar todos los programas en C y los ficheros resultantes de la compilación, de forma que evite mezclar unos ficheros con otros de otras aplicaciones. Al final, si ese directorio ya no le resulta útil, bórrelo para evitar que se llene el disco duro de directorios y ficheros inútiles.


El Compilador de Borland y sus Menús

Aquí pretendemos dar un resumen de las opciones más útiles del compilador. Todo lo aquí explicado es aplicable a muchos compiladores aunque nosotros nos referimos a los compiladores de Borland (Borland C++, Turbo C...).

El compilador tiene un menú en la parte superior al estilo de cualquier programa habitual. Cada opción del menú superior se despliega mostrando una lista de opciones relacionadas. Para desplegar ese submenú se puede utilizar el ratón, pulsar F10 y luego usar las fechas, o bien, pulsar la tecla Alt y, sin soltarla, pulsar también la inicial del menú que queremos desplegar. Los menús son los siguientes, detallando las opciones más útiles:

  1. Menú File (Archivo): Las opciones son las siguientes dentro de este menú.

  2. Menú Edit (Edición): Tiene las opciones típicas para facilitar la edición de programas, incluyendo las utilísimas funciones de Cortar (Cut), Copiar (Copy) y Pegar (Paste).

  3. Menú Search (Búsqueda): Opciones para buscar textos en el programa, reemplazarlos por otros, ir a cierta línea...

  4. Menú Run (Ejecutar): La opción Run (Ctrl-F9) es la más útil y permite ejecutar el programa. Si el programa no está compilado, lo compila previamente y si tiene errores, los visualizará (sin ejecutar el programa, obviamente) en una ventana denominada Message. Las demás opciones y el menú Debug son opciones del debugger o depurador de programas y se explican más adelante.

  5. Menú Compile (Compilar): Son las opciones para compilar el programa sin necesidad de ejecutarlo posteriormente. Se distingue entre compilar (compile) el programa fuente y enlazar (link) que consiste en unirle las funciones de librerías cuya definición no está incluida en el programa (funciones de stdio.h por ejemplo). Al final se generarán ficheros con la extensión .OBJ y .EXE respectivamente. Recuerde que si lo que desea es ejecutar el programa para probar su funcionamiento, la opción Run compila el programa si es necesario (si ha habido alguna modificación), por lo que no es necesario compilar primero y luego ejecutar.

  6. Menú Project (Proyectos): Un proyecto es un fichero (.prj) que contiene información sobre todos los ficheros que se son usados por un programa. Esto se utiliza cuando nuestro programa es tan grande que decidimos partirlo en diversos ficheros independientes utilizando las ventajas de la compilación separada. Resumiendo, se crean ficheros con diversas funciones (con la extensión .C) y, para cada uno de ellos, se crea un fichero con las cabeceras de las funciones (con la extensión .h). Además, hay que crear un fichero .C que contenga la función principal main(). Los ficheros .h se incluyen con la directiva #include en los ficheros .C donde se utilicen. Tras eso, se crea un fichero de proyecto al que se añaden todos los ficheros .C (NO los .h) que sean necesarios, incluyendo aquel fichero con la función principal. Al compilar un proyecto se genera el programa ejecutable (.EXE) con el nombre del proyecto (no con el nombre del fichero con la función principal.

  7. Menú Options (Opciones): Contiene multitud de opciones de configuración del compilador. Algunas importantes son las siguientes:

  8. Menú Window (Ventana): Tiene opciones para moverse o alterar las distintas ventanas que abre el compilador. Por ejemplo, podemos cambiar el tamaño y la posición de cada ventana, ampliarla (zoom), cerrarla (close), ir a la ventana de mensajes de error (Message), ir a la ventana de visualización de variables (Watch), ir a la ventana de ejecución del programa o ventana de usuario (User screen Alt-F5)... Observe que la ventana donde se ejecuta el programa se llama ventana de usuario y en ella se muestra la salida por pantalla del programa. Note que esa ventana no se borra cada vez que se ejecuta un programa, sino que escribe a continuación. Esa ventana es muy práctica y, por eso existe una forma rápida de acceder a ella: Alt-F5. Una opción muy útil para cambiar de ventana es pulsando F6 (Next). Esto consigue ir cambiando de ventana alternativamente hasta llegar a la ventana que busquemos.

  9. Menú Help (Ayuda): Aquí hay utilísimas opciones para localizar información sobre el compilador y sobre el lenguaje C: funciones de biblioteca (matemáticas, de cadenas...), formatos de lectura y escritura de scanf() y printf(), tipos de datos, operadores... En general, se accede a la ayuda usando la tecla F1. Si estamos en la ventana de errores (Message) y pulsamos F1 sobre un error, nos muestra alguna información sobre ese error y posibles modos de corregirlo. Si situamos el cursor encima de una palabra (por ejemplo printf) y pulsamos Ctrl-F1, nos situamos en la parte de la ayuda que evoque dicha palabra.



El Depurador o Debugger

El depurador es una herramienta extremadamente útil para todo programador. Esta herramienta permite depurar programas, es decir, facilita la tarea de encontrar errores en un programa. En programación es muy frecuente que durante la creación de un programa éste no funcione como nosotros esperamos o deseamos que lo haga y, sin embargo, aparentemente el algoritmo sea correcto y esté bien implementado. Evidentemente, si el programa no funciona correctamente es que el programa está mal.

La ayuda que oferta el depurador consiste simplemente en permitir que el programa sea ejecutado paso a paso (instrucción a instrucción, línea a línea) y, en todo momento, el programador puede ver el contenido de cualquier variable del programa. Obviamente, el depurador no nos dice dónde están los errores, pero si vamos ejecutando el programa paso a paso con atención, será fácil descubrir en qué momento una variable no toma el valor que debería tomar y, por tanto, ahí debe existir un error de programación.

Por tanto, muchas veces hay que usar el depurador con un papel en el que vayamos haciendo nosotros también los cálculos dudosos y vayamos cotejando nuestros cálculos con los cálculos que arroja el depurador.

Manejar el depurador es extremadamente simple y todas sus opciones están en el menú Run y Debug. Veamos las más importantes:

  1. Menú Run (Ejecutar):

  2. Menú Debug (Depuración): Ese menú contiene, básicamente algunas opciones para la depuración de programas. Las más importante son las que se refieren a visualizar el contenido de las variables e incluso modificar su valor: