PDF de programación - Depurador gbd.doc

Imágen de pdf Depurador gbd.doc

Depurador gbd.docgráfica de visualizaciones

Publicado el 14 de Enero del 2017
263 visualizaciones desde el 14 de Enero del 2017
232,6 KB
22 paginas
Depurador GDB



Juan Jose Moreno Moll


Ingeniería Informática



Depurador GDB

Índice

1. Introducción.................................................................................................3

2. Preparar programas ejecutables para poder utilizarlos con el depurador ........................... 4

3. Utilizar GDB................................................................................................5

3.1 Tareas principales de un depurador.................................................................................. 8

3.2. Lanzar a GDB.................................................................................................................. 8

4. Comenzar y finalizar la ejecución de un programa dentro de GDB ...........9
5. Parar y continuar una ejecución. .................................................................10

5.1. Breakpoints.................................................................................................................... 10

5.2. Watchpoints................................................................................................................... 11

5.3. Continuar la ejecución y ejecución paso a paso ............................................................ 12

5.4. Ejemplos de los comandos break. info, delete, continue, next, step ............................ 12

6. Consultar valores de los datos y expresiones del programa .......................15

6.1. Consultar datos y expresiones ....................................................................................... 15

6.2. Consulta de variables con mismo nombre y distinto alcance........................................ 17

6.3. Vectores creados de forma dinámica............................................................................. 18

6.4. Mostrar valores de expresiones y variables de forma automática ................................. 18

7. Consultar la pila...........................................................................................18
8. Alterar la ejecución del programa ...............................................................20
9. Listar el programa........................................................................................20



19-feb-02



2/22


Ingeniería Informática

1. Introducción



Depurador GDB

La realización de un programa en cualquier lenguaje de programación es un proceso más o
menos largo que debe terminar en la escritura de un código del programa que ‘funcione
correctamente’. Que un programa funcione correctamente significa que proporcione los
‘resultados esperados’, es decir que su comportamiento real coincida con el comportamiento
esperado. Un programa es correcto si no tiene errores de ejecución y si se cumple las
especificaciones escritas en la fase de especificación.

En el proceso de escritura de un programa aparecen muchos errores que debemos ir
corrigiendo hasta llegar a escribir el programa correctamente. Los tipos de errores que
podemos encontrarnos son:

* Errores de sintaxis: Son errores producidos por la incumplimiento de las reglas
sintácticas del lenguaje que estemos utilizando. Hasta que no se corrigen estos errores
no podemos obtener un código ejecutable del programa. Este tipo de errores se
corrigen mediante el compilador.

* Errores de ejecución: Son errores que se producen cuando se realiza una operación no
válida que da lugar a la finalización anormal del programa (división por cero, abrir
ficheros que no existen, acceder a zonas de memoria no permitidas, etc.).

* Errores lógicos: Son errores debidos a la traducción incorrecta de las especificaciones
del programa. El programa termina normalmente pero no produce los resultados
esperados.

Un depurador es una herramienta de programación que nos permite la detección y corrección
de errores de ejecución y errores lógicos. Este tipo de errores aparecen a partir del momento
en el que tenemos un código sintácticamente correcto del que obtenemos un programa
ejecutable. Es al probar este programa ejecutable cuando se puede detectar la aparición de
errores de ejecución y lógicos.

El depurador nos permite ejecutar el programa de tal forma que es posible ir acotando las
zonas donde se están produciendo errores, observar bajo que valores o condiciones se dan
éstos, etc. Esta información nos ayudará a modificar el código para corregir y evitar fallos del
programa.

Hay que advertir que un depurador ayuda a solucionar problemas de incorrección puntuales de
los programas, pero en ningún caso sirve para arreglar un programa mal especificado o mal
concebido. Un programa mal especificado significa un tener que construir un programa del
que no sabemos exactamente que debe hacer (o que no debe hacer), y jamás se podrá decir que
funciona bien o mal. Y un programa mal concebido (mal diseñado o con ausencia total de
diseño) no tiene solución posible.

La depuración de programas es una tarea bastante complicada, sobre todo con depuradores en
línea como gdb, por lo que para facilitar esta tarea los programas deben estar bien
especificados y diseñados y estar escritos con la máxima claridad (legibilidad de los
programas). La depuración de un programa se facilita si es correcta su especificación, diseño y
legibilidad y nunca a la inversa.

19-feb-02



3/22


Ingeniería Informática



Depurador GDB

La mejor herramienta de depuración es evitar los errores desde el principio.

Muchos lenguajes y plataformas vienen acompañados con este tipo de herramientas. El
funcionamiento de un depurador es muy semejante al funcionamiento del depurador que se
explica en este documento, gdb. Por ejemplo el entorno de programación de Pascal TURBO-
PASCAL o el de C TURBO-C vienen con este tipo de herramienta integrada dentro su
interfaz gráfico. El interfaz gráfico facilita la utilización del depurador, siempre que se sepa
manejar correctamente. Esto significa que la utilización sin conocimiento de causa de‘f7’ y/o
‘f8’ en los entornos anteriormente mencionados es bastante inútil. (Por ejemplo muchas
personas habrán observado lo aburrido y cansado que resulta utilizar esas teclas cuando
llegamos a una sección de código con 2 ó 3 bucles ‘for’ anidados con variables de control con
valores medios).

La elección de un depurador en línea se debe a que con él no es posible hacer un uso
inconsciente y mecánico, que fácilmente se da en depuradores gráficos. El conocimiento de un
depurador en línea aumenta de forma muy significativa la productividad y el buen uso de
depuradores gráficos.

A partir de este momento vamos a explicar algunas de las características y comandos más
importantes del depurador gdb. Las características y comandos de otros depuradores de C o
de otros lenguajes suelen ser muy semejantes. Una descripción completa de este depurador se
puede encontrar en su manual.

El depurador permite ver que está haciendo un programa por ‘dentro’ mientras se ejecuta. gdb
permite hacer cuatro cosas que ayudan a detectar y corregir errores dentro del código del
programa:

1) Comenzar a ejecutar un programa especificando cualquier cosa que pueda afectar a su

comportamiento.

2) Hacer que el programa se pare en cualquier línea de código. Se puede indicar incluso

bajo que condiciones se debe parar.

3) Examinar que ocurre cuando el programa está parado.
4) Cambiar cosa dentro del programa que está en ejecución.

2. Preparar programas ejecutables para poder utilizarlos con el depurador

Un depurador permite la ejecución controlada del programa de forma que se puede establecer
una relación entre el código fuente y el código que se está ejecutando. De esta forma el
depurador puede indicar a que línea del código fuente corresponde la instrucción (o
instrucciones) de código ejecutable que en ese momento se está ejecutando.

19-feb-02



4/22


Ingeniería Informática



Depurador GDB

Para poder hacer esto es necesario que haya una equivalencia total entre código fuente (escrito
en C u otro lenguaje) y el código ejecutable del programa. Ocurre que en general un
compilador cuando genera el código ejecutable de un programa realiza muchas tareas de
optimización que hacen que no haya una equivalencia entre código fuente y código ejecutable.
Por este motivo hay que indicar al compilador que no realice ninguna tipo de optimización
para poder utilizar el código en el depurador. Cada vez que queramos depurar un programa
debemos compilar el programa con la opción de no optimización. En habitual que la opción
que indica al compilador que no realice tareas de optimización es ‘-g’ (no sólo en C , sino en
muchos otros lenguajes). En que en el caso del compilador ‘gcc’ esta opción es también ‘-g’.

Todos los ficheros que componen el programa deben compilarse con esta opción. Por ejemplo
en el caso de que queramos depurar un programa que utiliza un archivo fuente llamado
‘vector.c’ y que tiene como fichero principal a ‘prog.c’ debemos compilar el programa con las
siguientes órdenes:

c:...> gcc -g vector.c
c:...> gcc -g prog.c vector.o -o prog

Todos los ficheros objeto que componen el programa deberían estar compilados con la opción
‘-g’. En el caso del gcc además es necesario indicar que el programa ejecutable no tenga
extensión (...-o prog). De esta forma el compilador produce dos ficheros de salida: prog y
prog.exe. El segundo de ellos (prog.exe) es el program
  • Links de descarga
http://lwp-l.com/pdf360

Comentarios de: Depurador gbd.doc (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad