Herramientas de programación Herramientas de programación para procesamiento de señales Índice • • • • • • • • • IDE Automatización de compilación básica: make Debugger Estructuras de datos Memory Profiler Performance profiler Automatización de compilación multiplataforma Diff Control de versiones Herramientas Herramientas de programación 2014 2 IDE • Un editor de texto. • Un compilador. • Un intérprete. • Un depurador. • control de versiones (e.g. svn, git). • ayuda en la construcción de interfaces gráficas de usuario (GUI). Herramientas Herramientas de programación 2014 3 Índice • • • • • • • IDE Automatización de compilación básica: make Debugger Estructuras de datos Memory Profiler Performance profiler Automatización de compilación multiplataforma Herramientas Herramientas de programación 2014 4 Compilación (1) main.c main.obj int aux1,aux2; … aux2 = fun1(aux1); … … MOVE R3,(aux1) CALL fun1 … compilador auxiliares.c auxiliares.obj … int fun1(int x) { … } … fun1: … compilador prog.exe linker 1547 2388 … MOVE R3,2388 CALL 1547 … … … [inicio fun1] … [valor de aux] … • problemas – N+1 invocaciones – recordar cual compilar: depende del usuario – simple Herramientas Herramientas de programación 2014 5 Compilación (2) • Grafo de dependencias – Código objeto depende de código fuente – Ejecutable depende de código objeto – Comparación de fechas Herramientas Herramientas de programación 2014 6 Compilación (3) Makefile prog.exe: a.o b.o c.o gcc a.o b.o c.o -o prog.exe a.o: a.c gcc -c a.c -o a.o b.o: b.c gcc -c b.c -o b.o c.o: c.c gcc -c c.c -o c.o • Make – – – – Implementa el grafo Lenguaje sencillo Reglas genéricas Nativo unix Herramientas • sintaxis – – – – reglas Objetivos Dependencias acciones Herramientas de programación 2014 Sintaxis objetivo: dependencia acción 7 Índice • • • • • • • IDE Automatización de compilación básica: make Debugger Estructuras de datos Memory Profiler Performance profiler Automatización de compilación multiplataforma Herramientas Herramientas de programación 2014 8 Debugger • • • • • • Estado: valores de las variables Ver el estado del programa Detener en puntos de interés: breakpoints Detener por cambios en valores: watchpoints Detener por errores Herramientas – Gdb, lldb, visual studio – Front-ends: ddd Herramientas Herramientas de programación 2014 9 Índice • • • • • • • IDE Automatización de compilación básica: make Debugger Estructuras de datos Memory Profiler Performance profiler Automatización de compilación multiplataforma Herramientas Herramientas de programación 2014 10 Estructuras de datos • • • • Formas de organizar los datos eficientemente Críticas en la performance de un algoritmo Performance: O(n) Ejemplo: – Arreglo vs lista encadenada Operación Array LinkedList Inserción/remoci O(n) ón O(1) Acceso aleatorio O(1) O(n) Herramientas Herramientas de programación 2014 11 Índice • • • • • • • IDE Automatización de compilación básica: make Debugger Estructuras de datos Memory Profiler Performance profiler Automatización de compilación multiplataforma Herramientas Herramientas de programación 2014 12 Memory Profiler • Detectar problemas de memoria • Tipos de problemas: – Uso de memoria no permitida: corrupción – leaks de memoria – Uso de valores no inicializados – Corrupción de stack Herramientas Herramientas de programación 2014 13 Índice • • • • • • • IDE Automatización de compilación básica: make Debugger Estructuras de datos Memory Profiler Performance profiler Automatización de compilación multiplataforma Herramientas Herramientas de programación 2014 14 Performance Profiler • Analizar detalladamente velocidad de código • Herramientas: valgrind, visual studio, xcode • Front-ends: kcachegrind, qcachegrind Herramientas Herramientas de programación 2014 15 Índice • • • • • • • • • IDE Automatización de compilación básica: make Debugger Estructuras de datos Memory Profiler Performance profiler Automatización de compilación multiplataforma Diff Control de versiones Herramientas Herramientas de programación 2014 16 Compilación Multiplataforma • Cmake – Independencia de la plataforma – Independencia del IDE • • • • Expresión del grafo de dependencia Detección de prestaciones del compilador Descubrimiento de librerías Generación de proyectos para IDES Herramientas Herramientas de programación 2014 17 Índice • • • • • • • • • IDE Automatización de compilación básica: make Debugger Estructuras de datos Memory Profiler Performance profiler Automatización de compilación multiplataforma Diff Control de versiones Herramientas Herramientas de programación 2014 18 Diff & Patch • • • • • • Propósito: ver diferencias entre archivos Automático Inteligente Eficiente Patches Herramientas – diff – Frontends – Integradas: cliente control versiones, IDEs Herramientas Herramientas de programación 2014 19 Índice • • • • • • • • • IDE Automatización de compilación básica: make Debugger Estructuras de datos Memory Profiler Performance profiler Automatización de compilación multiplataforma Diff Control de versiones Herramientas Herramientas de programación 2014 20 Control de versiones • Qué es? Contador de cambios • Características – – – – – Portabilidad Backup Reproducibilidad Colaboración Blame • Herramientas: cvs, svn, mercurial, git • Git: – Front end: sourcetree, gitX Herramientas Herramientas de programación 2014 21