Está en la página 1de 21

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; … prog.exe
… MOVE R3,(aux1)
aux2 = fun1(aux1); compilador CALL fun1 …
… … MOVE R3,2388
CALL 1547

linker …
auxiliares.c auxiliares.obj …
… … 1547 [inicio fun1]
int fun1(int x) fun1: …
compilador 2388 [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 • sintaxis Sintaxis


– Implementa el grafo – reglas
objetivo: dependencia
– Lenguaje sencillo – Objetivos
acción
– Reglas genéricas – Dependencias
– Nativo unix – acciones

Herramientas Herramientas de programación 2014 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) O(1)
ón
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

También podría gustarte