SlideShare a Scribd company logo
1 of 12
Download to read offline
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
valgrind y ASAN
Dos formas de instrumentar código en busca de
errores
Albert Astals Cid
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
¿Quien es Albert Astals Cid?
 Ingeniero en Informática por la UPC
 Traductor en KDE desde 2002
 Programador en KDE desde 2003
 Mantenedor de KPDF/Okular desde 2004
 Miembro de KDE eV desde 2005, actualmente en la Junta Directiva
 Miembro fundador de KDE España, ex-presidente
 NO SOY UN EXPERTO EN Valgrind o ASAN
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
¿Qué es Valgrind?
 Valgrind es un conjunto libre (GPL) 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
 Linux: x86, AMD64, PPC32, PPC64, PPC64LE, S390X, ARM, ARM64, MIPS32, MIPS64
 Solaris/illumos: X86, AMD64
 Darwin: X86, AMD64
 Android: ARM, ARM64, MIPS32, X86
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
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
 No necesita recompilación
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
¿Como usar Memcheck?
$ valgrind opciones nombreDeMiPrograma
--trace-children=no|yes Valgrind-ise child processes? [no]
--num-callers=<number> show <number> callers in stack traces [12]
--leak-check=no|summary|full search for memory leaks at exit? [summary]
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
¿Que es ASAN?
AddressSanitizer (aka ASAN) es un detector de errores de memoria
para C/C++.
Encuentra:
 Use after free (dangling pointer dereference)
 Heap buffer overflow
 Stack buffer overflow
 Global buffer overflow
 Use after return
 Initialization order bugs
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
¿Que es ASAN? (II)
Es una herramienta rápida. Los programas son en torno a 2 veces
más lentos.
Funciona en x86 Linux/Mac y ARM Android.
Soporta gcc (>=4.8) y clang (>=3.1) (nuevas versiones muy
recomendadas)
Es un proyecto de Google
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
¡Fácil! Vámonos a casa :D
¡Esperad!
Tengo ejemplos
¿Como uso ASAN?
-fsanitize=address -g -fno-omit-frame-pointer
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
¿Cuando usar Memcheck/ASAN?
 Cuando quieres debugar un problema
 Cuando quieres buscar leaks (valgrind)
 Siempre!
 Con valgrind es lento pero muchas veces posible
 Encuentra errores que no siempre son visibles
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
Ejemplos simples
 use_after_free
 stack_out_of_bounds
 heap_out_of_bounds
 uninitialized_value
 global_out_of_bounds
 mismatched_delete
 memory_leaks
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
Comparación
 Valgrind es más leeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeento
 Valgrind no necesita recompilación
 Valgrind continua despues del primer error
 Valgrind encuentra memoria sin inicializar (MSAN es menos bueno)
 Valgrind no encuentra accesos fuera de pila/globales
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Valgrind y ASAN
Preguntas?

More Related Content

Similar to valgrind y ASAN Dos formas de instrumentar código en busca de errores

Similar to valgrind y ASAN Dos formas de instrumentar código en busca de errores (16)

Novedades de C++11
Novedades de C++11Novedades de C++11
Novedades de C++11
 
10 formas de colaborar akademy es 2016
10 formas de colaborar akademy es 201610 formas de colaborar akademy es 2016
10 formas de colaborar akademy es 2016
 
Desarrollando software libre sin ser informático akademy es 2017
Desarrollando software libre sin ser informático akademy es 2017Desarrollando software libre sin ser informático akademy es 2017
Desarrollando software libre sin ser informático akademy es 2017
 
KDE y Qt 5
KDE y Qt 5KDE y Qt 5
KDE y Qt 5
 
Okular
OkularOkular
Okular
 
¿Conoces swift?
¿Conoces swift?¿Conoces swift?
¿Conoces swift?
 
Hacia una Herramienta CAD Open Source
Hacia una Herramienta CAD Open SourceHacia una Herramienta CAD Open Source
Hacia una Herramienta CAD Open Source
 
TUTORIAL DE AUTOCAD 2015
TUTORIAL DE AUTOCAD 2015TUTORIAL DE AUTOCAD 2015
TUTORIAL DE AUTOCAD 2015
 
Tutorial autocad2015
Tutorial autocad2015Tutorial autocad2015
Tutorial autocad2015
 
KDE España: Qué es y para qué sirve
KDE España: Qué es y para qué sirveKDE España: Qué es y para qué sirve
KDE España: Qué es y para qué sirve
 
Software libre en la oficina técnica.
Software libre en la oficina técnica.Software libre en la oficina técnica.
Software libre en la oficina técnica.
 
Curso basico c sharp
Curso basico c sharpCurso basico c sharp
Curso basico c sharp
 
Curso basico c sharp
Curso basico c sharpCurso basico c sharp
Curso basico c sharp
 
15 años de_kde
15 años de_kde15 años de_kde
15 años de_kde
 
Curso de AutoCad
Curso de AutoCadCurso de AutoCad
Curso de AutoCad
 
GUÍA DE ESTUDIO 1a - Conociendo AutoCAD
GUÍA DE ESTUDIO 1a - Conociendo AutoCADGUÍA DE ESTUDIO 1a - Conociendo AutoCAD
GUÍA DE ESTUDIO 1a - Conociendo AutoCAD
 

More from kdeespana

Slimbook - Welcome to Freedom - Akademy-es 2017
Slimbook - Welcome to Freedom - Akademy-es 2017Slimbook - Welcome to Freedom - Akademy-es 2017
Slimbook - Welcome to Freedom - Akademy-es 2017kdeespana
 
KDE España: Qué es y para que sirve
KDE España: Qué es y para que sirve KDE España: Qué es y para que sirve
KDE España: Qué es y para que sirve kdeespana
 
Descubre plasma 5, el escritorio de la Comunidad KDE
Descubre plasma 5, el escritorio de la Comunidad KDEDescubre plasma 5, el escritorio de la Comunidad KDE
Descubre plasma 5, el escritorio de la Comunidad KDEkdeespana
 
La potencia del Terminal
La potencia del TerminalLa potencia del Terminal
La potencia del Terminalkdeespana
 
Kool Desktop Environment
Kool Desktop EnvironmentKool Desktop Environment
Kool Desktop Environmentkdeespana
 
openQA y Open Build System
openQA y Open Build SystemopenQA y Open Build System
openQA y Open Build Systemkdeespana
 
KDE Frameworks, cuando Qt se nos queda corto
KDE Frameworks, cuando Qt se nos queda corto KDE Frameworks, cuando Qt se nos queda corto
KDE Frameworks, cuando Qt se nos queda corto kdeespana
 
Qt5 en distintas plataformas
Qt5 en distintas plataformasQt5 en distintas plataformas
Qt5 en distintas plataformaskdeespana
 
Next gen Desktop Apps
Next gen Desktop AppsNext gen Desktop Apps
Next gen Desktop Appskdeespana
 
KDE connect - Akademy-es 2014 por Albert Vaca
KDE connect - Akademy-es 2014 por Albert VacaKDE connect - Akademy-es 2014 por Albert Vaca
KDE connect - Akademy-es 2014 por Albert Vacakdeespana
 
Next gen-apps
Next gen-appsNext gen-apps
Next gen-appskdeespana
 
Kde experience - Akademy-es 2014
Kde experience - Akademy-es 2014Kde experience - Akademy-es 2014
Kde experience - Akademy-es 2014kdeespana
 
Baloo - Akademy-es 2014
Baloo - Akademy-es 2014Baloo - Akademy-es 2014
Baloo - Akademy-es 2014kdeespana
 
Es el momento de KDE - Akademy-es 2014
Es el momento de KDE - Akademy-es 2014Es el momento de KDE - Akademy-es 2014
Es el momento de KDE - Akademy-es 2014kdeespana
 
Mi momento kde Akademy-es 2014
Mi momento kde Akademy-es 2014Mi momento kde Akademy-es 2014
Mi momento kde Akademy-es 2014kdeespana
 
Desarrollando KDE
Desarrollando KDEDesarrollando KDE
Desarrollando KDEkdeespana
 
Plasma active three akademy es-2013_bilbo
Plasma active three akademy es-2013_bilboPlasma active three akademy es-2013_bilbo
Plasma active three akademy es-2013_bilbokdeespana
 
Es el momento de kde 4
Es el momento de kde 4Es el momento de kde 4
Es el momento de kde 4kdeespana
 
Akademy 2013__matija_šuklje_—_fla
 Akademy 2013__matija_šuklje_—_fla Akademy 2013__matija_šuklje_—_fla
Akademy 2013__matija_šuklje_—_flakdeespana
 

More from kdeespana (20)

Slimbook - Welcome to Freedom - Akademy-es 2017
Slimbook - Welcome to Freedom - Akademy-es 2017Slimbook - Welcome to Freedom - Akademy-es 2017
Slimbook - Welcome to Freedom - Akademy-es 2017
 
KDE España: Qué es y para que sirve
KDE España: Qué es y para que sirve KDE España: Qué es y para que sirve
KDE España: Qué es y para que sirve
 
Descubre plasma 5, el escritorio de la Comunidad KDE
Descubre plasma 5, el escritorio de la Comunidad KDEDescubre plasma 5, el escritorio de la Comunidad KDE
Descubre plasma 5, el escritorio de la Comunidad KDE
 
La potencia del Terminal
La potencia del TerminalLa potencia del Terminal
La potencia del Terminal
 
Kool Desktop Environment
Kool Desktop EnvironmentKool Desktop Environment
Kool Desktop Environment
 
openQA y Open Build System
openQA y Open Build SystemopenQA y Open Build System
openQA y Open Build System
 
Plasma Next
Plasma NextPlasma Next
Plasma Next
 
KDE Frameworks, cuando Qt se nos queda corto
KDE Frameworks, cuando Qt se nos queda corto KDE Frameworks, cuando Qt se nos queda corto
KDE Frameworks, cuando Qt se nos queda corto
 
Qt5 en distintas plataformas
Qt5 en distintas plataformasQt5 en distintas plataformas
Qt5 en distintas plataformas
 
Next gen Desktop Apps
Next gen Desktop AppsNext gen Desktop Apps
Next gen Desktop Apps
 
KDE connect - Akademy-es 2014 por Albert Vaca
KDE connect - Akademy-es 2014 por Albert VacaKDE connect - Akademy-es 2014 por Albert Vaca
KDE connect - Akademy-es 2014 por Albert Vaca
 
Next gen-apps
Next gen-appsNext gen-apps
Next gen-apps
 
Kde experience - Akademy-es 2014
Kde experience - Akademy-es 2014Kde experience - Akademy-es 2014
Kde experience - Akademy-es 2014
 
Baloo - Akademy-es 2014
Baloo - Akademy-es 2014Baloo - Akademy-es 2014
Baloo - Akademy-es 2014
 
Es el momento de KDE - Akademy-es 2014
Es el momento de KDE - Akademy-es 2014Es el momento de KDE - Akademy-es 2014
Es el momento de KDE - Akademy-es 2014
 
Mi momento kde Akademy-es 2014
Mi momento kde Akademy-es 2014Mi momento kde Akademy-es 2014
Mi momento kde Akademy-es 2014
 
Desarrollando KDE
Desarrollando KDEDesarrollando KDE
Desarrollando KDE
 
Plasma active three akademy es-2013_bilbo
Plasma active three akademy es-2013_bilboPlasma active three akademy es-2013_bilbo
Plasma active three akademy es-2013_bilbo
 
Es el momento de kde 4
Es el momento de kde 4Es el momento de kde 4
Es el momento de kde 4
 
Akademy 2013__matija_šuklje_—_fla
 Akademy 2013__matija_šuklje_—_fla Akademy 2013__matija_šuklje_—_fla
Akademy 2013__matija_šuklje_—_fla
 

valgrind y ASAN Dos formas de instrumentar código en busca de errores

  • 1. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN valgrind y ASAN Dos formas de instrumentar código en busca de errores Albert Astals Cid
  • 2. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN ¿Quien es Albert Astals Cid?  Ingeniero en Informática por la UPC  Traductor en KDE desde 2002  Programador en KDE desde 2003  Mantenedor de KPDF/Okular desde 2004  Miembro de KDE eV desde 2005, actualmente en la Junta Directiva  Miembro fundador de KDE España, ex-presidente  NO SOY UN EXPERTO EN Valgrind o ASAN
  • 3. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN ¿Qué es Valgrind?  Valgrind es un conjunto libre (GPL) 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  Linux: x86, AMD64, PPC32, PPC64, PPC64LE, S390X, ARM, ARM64, MIPS32, MIPS64  Solaris/illumos: X86, AMD64  Darwin: X86, AMD64  Android: ARM, ARM64, MIPS32, X86
  • 4. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN 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  No necesita recompilación
  • 5. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN ¿Como usar Memcheck? $ valgrind opciones nombreDeMiPrograma --trace-children=no|yes Valgrind-ise child processes? [no] --num-callers=<number> show <number> callers in stack traces [12] --leak-check=no|summary|full search for memory leaks at exit? [summary]
  • 6. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN ¿Que es ASAN? AddressSanitizer (aka ASAN) es un detector de errores de memoria para C/C++. Encuentra:  Use after free (dangling pointer dereference)  Heap buffer overflow  Stack buffer overflow  Global buffer overflow  Use after return  Initialization order bugs
  • 7. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN ¿Que es ASAN? (II) Es una herramienta rápida. Los programas son en torno a 2 veces más lentos. Funciona en x86 Linux/Mac y ARM Android. Soporta gcc (>=4.8) y clang (>=3.1) (nuevas versiones muy recomendadas) Es un proyecto de Google
  • 8. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN ¡Fácil! Vámonos a casa :D ¡Esperad! Tengo ejemplos ¿Como uso ASAN? -fsanitize=address -g -fno-omit-frame-pointer
  • 9. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN ¿Cuando usar Memcheck/ASAN?  Cuando quieres debugar un problema  Cuando quieres buscar leaks (valgrind)  Siempre!  Con valgrind es lento pero muchas veces posible  Encuentra errores que no siempre son visibles
  • 10. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN Ejemplos simples  use_after_free  stack_out_of_bounds  heap_out_of_bounds  uninitialized_value  global_out_of_bounds  mismatched_delete  memory_leaks
  • 11. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN Comparación  Valgrind es más leeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeento  Valgrind no necesita recompilación  Valgrind continua despues del primer error  Valgrind encuentra memoria sin inicializar (MSAN es menos bueno)  Valgrind no encuentra accesos fuera de pila/globales
  • 12. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Valgrind y ASAN Preguntas?