akademy es2010 herramientas_valgrind_albert_astals
DESCRIPTION
Title: Herramientas de Valgrind Autor: Albert Astals http://tsdgeos.blogspot.com/ Akademy-es 2010 http://es.kde.org/akademy-es2010 License: CC-BY-SA http://creativecommons.org/licenses/by-sa/3.0/TRANSCRIPT
![Page 1: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/1.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
Como encontrar errores de uso de memoria con Valgrind
Albert Astals Cid
![Page 2: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/2.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
¿Quien es Albert Astals Cid?
Soy Yo!
Ingeniero en Informática por la UPC
Programador en KDE desde 2003
Mantenedor de KPDF/Okular desde 2004
Miembro de KDE eV desde 2005
Presidente de KDE España
NO soy un experto en Valgrind
![Page 3: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/3.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
¿Qué es Valgrind?
Valgrind es un conjunto de herramientaspara hacer debugging y profiling
Herramientas: memcheck: detector de errores de memoria cachegrind: profiler de cache callgrind: profiler de llamadas massif: profiler de uso de heap Helgrind/DRD: debugger de threads
Funciona en X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux, X86/Darwin
Licencia GPL
![Page 4: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/4.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
¿Porqué usar Valgrind? No necesita recompilación
No es un juguete
Tiene mantenedores activos
Es libre
![Page 5: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/5.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
Memcheck Detecta errores de gestión de memoria
Dirigido a programas en C y C++
Intercepta las lecturas y escrituras de memoria y llamadas a malloc/new/free/delete
Detecta: Accesos incorrectos a memoria Usos de variables no inicializadas Leaks de memoria free/delete incorrectos
Ejecuta los programas entre 10 y 30 veces más lento
![Page 6: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/6.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
¿Como usar Memcheck?$ valgrind nombreDeMiPrograma
--trace-children=no|yes Valgrind-ise child processes? [no]
--log-socket=ipaddr:port log messages to socket ipaddr:port
--num-callers=<number> show <number> callers in stack traces [12]
--suppressions=<filename> suppress errors described in <filename>
--gen-suppressions=no|yes|all print suppressions for errors? [no]
--db-attach=no|yes start debugger when errors detected? [no]
--leak-check=no|summary|full search for memory leaks at exit? [summary]
![Page 7: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/7.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
¿Cuando usar Memcheck?
Cuando quieres debugar un problema
Cuando quieres buscar leaks
Siempre!
Lento...
...pero posible, Julian Seward ejecuta KDE en un 2 PPC970 2.5Ghz y 4GB
Encuentra errores que no siempre son visibles
![Page 8: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/8.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
Entendiendo a Valgrind==25832== Invalid read of size 4==25832== at 0x8048724: BandMatrix::ReSize(int, int, int) (bogon.cpp:45)==25832== by 0x80487AF: main (bogon.cpp:66)==25832== Address 0xBFFFF74C is not stack'd, malloc'd or free'd
特色條目
???
![Page 9: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/9.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
Ejemplos simples error1.c - variable no inicializada
error2.c - acceso a memoria no alocatada
error3.c - free incorrecto
error4.c - delete incorrecto
error5.c - leak de memoria
error6.c - leak de memoria
error7.c - uso de memoria ya liberada
![Page 10: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/10.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
Tu programa no es tu código A veces ninguno de los errores es nuestro
La solución es usar suppressions
--gen-suppressions=no/yes/all
--suppression=ficheroSuppressions
![Page 11: Akademy es2010 herramientas_valgrind_albert_astals](https://reader038.vdocuments.pub/reader038/viewer/2022100500/557ad0edd8b42a200f8b5013/html5/thumbnails/11.jpg)
Sebastian Kügler <[email protected]>, FrOSCon 2006
Albert Astals Cid <[email protected]>, Akademy-es 2010
Valgrind
Preguntas?