Herramientas de Programación

Anuncio
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
Descargar