Akademy es2010 herramientas_valgrind_albert_astals

612 views

Published on

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/

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
612
On SlideShare
0
From Embeds
0
Number of Embeds
163
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Akademy es2010 herramientas_valgrind_albert_astals

  1. 1. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Valgrind Como encontrar errores de uso de memoria con Valgrind Albert Astals Cid Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  2. 2. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 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 Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  3. 3. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Valgrind ¿Qué es Valgrind?  Valgrind es un conjunto de herramientas para 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 Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  4. 4. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Valgrind ¿Porqué usar Valgrind?  No necesita recompilación  No es un juguete  Tiene mantenedores activos  Es libre Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  5. 5. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 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 Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  6. 6. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 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] Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  7. 7. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 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 Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  8. 8. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 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 特色 條目 ??? Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  9. 9. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 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 Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  10. 10. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 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 Albert Astals Cid <aacid@kde.org>, Akademy-es 2010
  11. 11. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Valgrind Preguntas? Albert Astals Cid <aacid@kde.org>, Akademy-es 2010

×