PDF de programación - Herramientas de Depuración

Imágen de pdf Herramientas de Depuración

Herramientas de Depuracióngráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 11 de Marzo del 2018)
713 visualizaciones desde el 11 de Marzo del 2018
70,5 KB
31 paginas
Creado hace 19a (24/10/2004)
Herramientas de

Depuración

Daniel Serpell
[email protected]

Introducción

● Por qué es necesario depurar

● Cómo depurar
● mensajes: printf / cout.
● “depuradores” (debuggers).
● depuradores de memoria.
● seguidores de llamadas (call trace).
● análisis de ejecución (execution profile).

Herramientas de Depuración

Mensajes

● Escribir Mensajes
● Utilizar stderr / cerr.
● Utilizar Macros:
__FILE__ / __LINE__ / __FUNCTION__
● Ejemplo:

#define DEBUG_MSG(msg, args...) \
fprintf (stderr,"%s: (%s[%d]) - " msg, \
__FUNCTION__, __FILE__, __LINE__, ##args)

● En C++, iostream.

Herramientas de Depuración

Depuradores

● Un Depurador permite

● Detener la ejecución.
● Examinar variables.
● Examinar las llamadas.
● Modificar variables.
● Llamar rutinas del programa.
● Contar eventos.

Herramientas de Depuración

● Cómo funciona un depurador

Depuradores

Sistema Operativo

Programa

Depurador

Herramientas de Depuración

● Depuradores en Linux

Depuradores

GDB

Herramientas de Depuración

Depuradores

● ¿Otros?

● DDD – The Data Display Debugger.
● Kdbg – Kde Debugger.
● CGDB – Curses Frontend to GDB.
● RHIDE / Kdevelop / etc.

Herramientas de Depuración

Depuradores - GDB

● Uso de GDB

● Pasos Previos.
● Cargar GDB.
● Detener el programa.
● Examinar la pila de ejecución.
● Examinar variables.
● Ejecución Paso a Paso.
● Puntos de quiebre avanzados.
● Otros usos avanzados.

Herramientas de Depuración

Uso de GDB

● Pasos Previos.
● El programa del tutorial:
int calcula_suma( int a, int b) {
return a+b;
}

int main(int argc, char ** argv ) {
int suma = 0;
while(suma < 100) {
int n;
printf("Ingresa un número:\n");
scanf("%d",&n);
suma = calcula_suma(suma, n);
printf("La suma es hasta ahora:%d\n",suma);
}
printf("Se terminó.\n");
return 0;
}

Herramientas de Depuración

Uso de GDB

● Pasos Previos.

● Compilar con opciones de depuración.

gcc -Wall [-O] -g -o prog prog.c

● Usar Bibliotecas para Depuración.

Herramientas de Depuración

Uso de GDB

● Cargar GDB

● Cargar el programa

gdb ./prog

● El entorno de GDB.

Herramientas de Depuración

Uso de GDB

● Detener la ejecución

● Señales Externas.

● Los puntos de quiebre.
break – Ingresa un punto de quiebre.

● Señales Internas - raise()

Herramientas de Depuración

Uso de GDB

● Examinar el entorno

● Examinar la pila de ejecución:
bt – backtrace.
bt full – Información completa.
up – Sube dentro de la pila.
down – Baja dentro de la pila.
info locals – Variables locales.
list – Lista el código.
disassemble – Lista el código ASM.

Herramientas de Depuración

Uso de GDB

● Examinar variables

● Examinar variables del programa:
print – Escribe.
display – Muestra siempre.
info locals – Muestra locales.
info variables – Variables.
info address <v> – Localización.

Herramientas de Depuración

Uso de GDB

● Ejecución Paso a Paso

● Ejecución paso a paso del programa:
step – Próxima línea.
next – Salta subrutinas.
finish – Sale de subrutina.
advance – Continua hasta un punto.
stepi / nexti – Paso a paso por el ASM.
jump – Salta.

Herramientas de Depuración

Uso de GDB

● Puntos de Quiebre

● Manejo de los puntos de quiebre
disable / enable – (des)habilita.
condition – Fija una condición.
catch throw – Atrapa excepciónes, C++.
watch – Escritura de variables.
awatch – Acceso a variables.

Herramientas de Depuración

Uso de GDB

● Otros Avanzados

thread – Cambia entre hilos.
set var – Cambia una variable.
return – Termina una función.

Herramientas de Depuración

Depuradores de Memoria

● Depuradores de Memoria

● Memoria Dinámica.

● ¡Punteros!

● Datos no inicializados.

Herramientas de Depuración

Depuradores de Memoria

● Valgrind

● Ejecución Controlada.

● Recompilación dinámica.

● Seguimiento de datos.

Herramientas de Depuración

Depuradores de Memoria

● Valgrind

● Distintas fachadas:

● Chequeo de Memoria: memcheck
● Condiciones de Carrera: hellgrind
● Uso de Memoria: massif
● Rendimiento de Cache: cachegrind

Herramientas de Depuración

Depuradores de Memoria

● Valgrind

● Uso en chequeo de memoria.

Herramientas de Depuración

Depuradores de Memoria

● Memprof

● Chequeo de memoria perdida.
● Uso interactivo.

Herramientas de Depuración

Seguidores de Llamadas

● Seguidores de Llamadas

● Interacción del programa con el S.O.

● Uso correcto de llamadas.

● Manejo de procesos.

Herramientas de Depuración

Seguidores de Llamadas

● Strace

● Intercepta las llamadas con el S.O.
● Escribe los parámetros y resultados.
● Uso:

strace [-e expr] programa [parámetros]

Herramientas de Depuración

Seguidores de Llamadas

● Strace

● Expresiones comunes:
trace=file – Operaciones a archivos.
trace=network – Operaciones de red.
read=[fd] – Datos leídos de [fd].
write=[fd] – Datos escritos a [fd].

● Opciones comunes:
-f – Sigue los “fork”.

Herramientas de Depuración

Análisis de Ejecución

● Análisis de Ejecución
(excecution profile)

● Datos estadísticos de ejecución:
● ¿quién llamo a una función?
● ¿cuántas veces se ejecutó el código?
● ¿cuánto tiempo tomó?
● ¿dónde se emplea mayor tiempo?

(hot-spots)

Herramientas de Depuración

Análisis de Ejecución

● Análisis de Ejecución

● ¿Cómo funciona un Analizador?

● Compilación Instrumentada.
● Información de Depuración.
● Biblioteca de Recolección.
● Herramienta de análisis de datos.

Herramientas de Depuración

Análisis de Ejecución

● Análisis de Ejecución

● Compilación Instrumentada:

gcc -Wall [-O] -g -pg -c prog.c

gcc -g -pg -o prog prog.o

Herramientas de Depuración

Análisis de Ejecución

● Análisis de Ejecución

● Herramienta de Análisis:

GPROF

Herramientas de Depuración

Análisis de Ejecución

● Gprof

● Opciones de reporte:
● Reporte normal

gprof prog

● Reporte línea a línea

gprof -l prog

Herramientas de Depuración

Preguntas

Herramientas de Depuración
  • Links de descarga
http://lwp-l.com/pdf9426

Comentarios de: Herramientas de Depuración (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad