Ensayo
Julio M. Vega y Jos´ M. Ca˜ as e n
http://jde.gsyc.es
Grupo de Rob´tica, 21 Mayo 2009 o
Contenidos
1
Contenidos
Introducci´n o Construcci´n de una aplicaci´n o o • Compilaci´n y enlazado o • Bibliotecas din´micas y est´ticas a a • Tablas de s´ ımbolos • Make y makefiles Depuraci´n o • GNU Debugger (GDB) • Valgrind
c 2009 GSyC
Herramientasde programaci´n C/C++ o
Introducci´n o
2
Introducci´n o
Rob´tica tiene mucho de programaci´n o o La inteligencia de un robot est´ en su software a Depurar nuestro software es importante y necesario A veces encontrar errores es dif´ ıcil Aplicaciones como gdb o valgrind ayudan a encontrar errores Errores de programaci´n o de funcionalidad o
c 2009 GSyC
Herramientas de programaci´nC/C++ o
Construcci´n de una aplicaci´n o o
3
Construcci´n de una aplicaci´n o o
Compilaci´n y enlazado o C´digo fuente (miprograma.c) o Compilar C´digo objeto (miprograma.o) o Enlazar Ejecutable, main a.out, elf (miprograma)
c 2009 GSyC
Herramientas de programaci´n C/C++ o
Construcci´n de una aplicaci´n o o
4
gcc -c file1.c file2.c file3.c gcc -o outputfile file1.ofile2.o file3.o gcc -o outputfile file1.c file2.c file3.c
c 2009 GSyC
Herramientas de programaci´n C/C++ o
Construcci´n de una aplicaci´n o o
5
Tablas de s´ ımbolos Funciones y variables tienen su direcci´n o gcc Opciones de compilaci´n -Wall o ¿D´nde buscar las cabeceras? -I o nm
c 2009 GSyC
Herramientas de programaci´n C/C++ o
Construcci´n de una aplicaci´n o o
6Bibliotecas Cabeceras Bibliotecas est´ticas y din´micas a a Enlazador din´mico ld.so a • LD LIBRARY PATH • /etc/ld.conf.so y ldconfig Opciones de enlazado • ¿D´nde buscar las bibliotecas? -L o • ¿Qu´ bibliotecas buscar? -l e Dependencias ldd
c 2009 GSyC
Herramientas de programaci´n C/C++ o
Construcci´n de una aplicaci´n o o
7
Make y Makefile Automatizar todo el proceso de construcci´n dela aplicaci´n o o Objetivos, requisitos y reglas TAB Variables pkg-config No s´lo para construir una aplicaci´n, tambi´n otras cosas o o e
c 2009 GSyC
Herramientas de programaci´n C/C++ o
Construcci´n de una aplicaci´n o o
8
JDEDIR = INC-DIR = -I. -I/usr/include/opencv -I$(JDEDIR)/include/jderobot ‘pkg-config --cflags libglade-2.0 gtkglext-1.0 gdkglext-1.0 gthread-2. LIB-DIR = -L.-L/usr/lib/jderobot ‘pkg-config --libs libglade-2.0 gtkglext-1.0 gdkglext-1.0 gthread-2.0‘ GCC = gcc CFLAGS = -g -pedantic -Wall LIBS = -lm -lX11 -lcv -lcxcore -lhighgui -lcvaux -lcolorspaces COMPONENT= opencvdemo2 $(COMPONENT): $(COMPONENT).o $(GCC) -shared -Wl,-soname,$(COMPONENT).so $(LIB-DIR) -o $(COMPONENT).so $(COMPONENT).o $(LIBS) $(COMPONENT).o: $(COMPONENT).c $(GCC) $(CFLAGS) $(INC-DIR)-fPIC -c $(COMPONENT).c clean: rm -f *.o $(COMPONENT).so
c 2009 GSyC
Herramientas de programaci´n C/C++ o
Depuraci´n o
9
Depuraci´n o
Depurar es localizar y reparar errores del c´digo fuente o Proceso necesario en la creaci´n de nuevo software o Las aplicaciones de depuraci´n nos ayudan a identificar los errores o
c 2009 GSyC
Herramientas de programaci´n C/C++ o
GNUDebugger (GDB)
10
GNU Debugger (GDB)
La mayor´ de las distribuciones Linux vienen con este debugger ıa GDB nos permite: Ver la estructura interna de un programa Imprimir valores de variables Establecer puntos de ruptura (breakpoints) Avanzar paso a paso en el c´digo o
c 2009 GSyC
Herramientas de programaci´n C/C++ o
GNU Debugger (GDB)
11
Compilaci´n o Para que nuestra aplicaci´npueda ser depurada con GDB necesitamos o indic´rselo a A la hora de compilar, lo haremos con gcc o g++ A˜adimos una opci´n extra -g y la compilaci´n incluir´ informaci´n n o o a o de depuraci´n o
c 2009 GSyC
Herramientas de programaci´n C/C++ o
GNU Debugger (GDB)
12
Ejecuci´n o GDB se lanza desde consola con el comando gdb Y le pasamos el nombre de nuestra aplicaci´n como...
Regístrate para leer el documento completo.