gdb5-diciembre-2022
Instrucciones para depurar código en ejecución con gdb.
Para depurar un programa hay que compilarlo con la opción -g, por ejemplo:
$ gcc -Wall -g clientevocalesUDP.c -o clientevocalesUDP
gdb (GNU Debugger) es un depurador para sistemas Unix que puede utilizarse con múltiples lenguajes de programación, entre ellos C [1]. Por ejemplo, para depurar un programa que se invoca con parámetros:
$ gdb --args ./clientevocalesUDP lab000.cps.unizar.es 32000
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/chus/docencia/rc/p3/debug/clientevocalesUDP...done.
Una vez lanzado gdb, hay que indicarle que ejecute el programa especificado:
(gdb) run
Starting program: ./clientevocalesUDP lab000.cps.unizar.es 32000
[...]
Teclea el texto a enviar y pulsa <Enter>, o termina con <Ctrl+d>
1234a
Leídos 6 bytes
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400bf2 in main (argc=3, argv=0x7fffffffd958) at clientevocalesUDP.c:61
61 if ((sentbytes = sendto(...)) < 0)
En este caso gdb nos informa de un error y nos señala la línea de código C que la ha provocado.
Para depurar un programa con parámetros y entrada redireccionada:
$ gdb ./clientevocalesUDP
(gdb) run lab000.cps.unizar.es 32000 < entrada.txt
Para la edición de este documento se ha utilizado Markdown [2]. El fuente puede encontrarse en el siguiente enlace:
http://webdiis.unizar.es/~chus/docencia/gdb/gdb.md
Las conversiones a formato pdf y HTML se han realizado con Pandoc [3]. La orden usada para generar el fichero pdf es:
$ pandoc -f markdown -V papersize=A4 \
-V geometry:"top=2cm, bottom=1.5cm, left=2cm, right=2cm" \
gdb.md --pdf-engine=pdflatex -o gdb.pdf
Y para generar salida en formato HTML:
$ pandoc -f markdown -s gdb.md -o gdb.html
Si se quiere utilizar una hoja de estilo:
$ pandoc -f markdown -s --css=css_template gdb.md -o gdb.html
28-octubre-2020: Versión inicial
5-diciembre-2022:
pandoc cambiada de --latex-engine a --pdf-engine[1] GDB: The GNU Project Debugger. Fecha de consulta: 28-octubre-2020. Disponible en https://www.gnu.org/software/gdb/
[2] Daring Fireball. Markdown syntax. Fecha de consulta: 8-octubre-2020. Disponible en https://daringfireball.net/projects/markdown/
[3] Pandoc: a universal document converter. Fecha de consulta: 8-octubre-2020. Disponible en http://pandoc.org/