Compilar y ejecutar¶
Vamos a compilar y ejecutar nuestra aplicación con el compilador gcc:
1 2 3 |
|
Nuestra aplicación tiene un error y ahora nos toca encontrarlo. Pero, ¿por dónde empezamos?
Danger
Un error muy común entre principiantes es empezar a depurar usando printf
para encontrar el momento en que la aplicación falla.
1 2 3 |
|
El problema, además de lo poco cómodo que es ir añadiendo y borrando estas sentencias por toda la aplicación, es que printf
escribe en la salida estándar del sistema operativo. Esta salida tiene un buffer y es posible que la aplicación falle antes de que se vacíe y dé la sensación de que el error se ha producido antes de dónde realmente tuvo lugar.
Si realmente tienes la necesidad de depurar así, usa la salida de error y no la estándar:
1 2 3 4 |
|
La salida estándar de error no tiene buffer y el mensaje es inmediatamente impreso por consola.
Gracias al depurador, podemos saber exáctamente en qué lugar y en qué condiciones se ha producido el error, con lo que no necesitamos usar técnicas de dudosa utilidad como printf
.
Para ello volvamos a compilar la aplicación pero añadiendo las marcas de depuración y arrancaremos el depurador con nuestro ejecutable:
1 2 3 4 |
|
El depurar ya está iniciado y está esperando órdenes. A lo largo del tutorial iremos viendo las más útiles. Pero por el momento comenzaremos con la orden run
, la cual permite iniciar la aplicación:
1 2 3 4 5 6 |
|
Tip
Siempre que no haya ambiguedad, podemos abreviar los comandos usando las primeras letras. En el caso de run
, podemos escribir r
y el resultado es el mismo. Para otras órdenes como mínimo habrá que escribir dos o tres letras.
El programa sigue fallando, pero esta vez tenemos información exacta de dónde. Ahora tenemos que encontrar el error. Para eso necesitamos visualizar el estado de la aplicación.