UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

14.3. La opción de depuración

El ejecutable que genera el compilador contiene información sobre los símbolos que utiliza. El comando nm muestra estos símbolos. Lee su página de manual y utilízalo para mostrar los símbolos por pantalla. ¿Qué diferencia hay en los datos mostrados cuando se utiliza la opción -a?

Detectar errores de ejecución en un programa en C que ha compilado sin problemas es la parte más costosa. Para ello se utiliza el depurador, un programa capaz de ejecutar un programa línea a línea mostrando al mismo tiempo el código fuente y el valor de las variables. Pero para hacer esto, el depurador necesita que el ejecutable incluya qué ficheros son los que tienen el código fuente. Esta información no es necesaria para la ejecución normal del programa, y por tanto, para incluirla en el ejecutable, se utiliza la opción -g. Compila de nuevo el programa esta vez con la opción -g:

$ gcc -g -Wall -o main_es main_es.c

Utilizando diferentes valores de la opción -o genera dos ejecutables, uno con la información para la depuración y otro sin ella. Comprueba con el comando ls que tienen diferentes tamaños. A continuación utiliza el comando nm con las opciones -al para mostrar los símbolos. ¿Qué diferencia hay entre ambos ejecutables?

Puedes capturar la salida del comando nm en sendos ficheros y compararlos, o usando el editor (lo puedes abrir en dos ventanas separadas) o con el comando diff (lee su página de manual). Busca la aparición del nombre del fichero que contiene el código fuente.