VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes...

60
VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de G.C. Autor: Daniel Bautista de Cabo

Transcript of VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes...

Page 1: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

VISUALIZADOR DIDÁCTICO

DE EJECUCIÓN PARA LC99

Tutores: Miguel Ángel Pérez AguiarJosé Fortes Gálvez

Facultad de InformáticaUniversidad de Las Palmas de

G.C.

Autor: Daniel Bautista de Cabo

Page 2: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 2

El proceso de la ejecución

Page 3: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 3

El Visualizador de Ejecución

Page 4: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 4

Contenidos

Introducción Estado inicial del tema Metodología seguida Recursos utilizados Planificación y desarrollo del proyecto Resultados y conclusiones Trabajo futuro

Page 5: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 5

¿Qué es LC99?

Lenguaje inspirado en Algol y Pascal Desarrollado en la E.U.I. de la

ULPGC Características interesantes para la

gestión de memoria (didáctico) Existe un compilador y actualmente

no acepta todo el lenguaje El compilador genera “código P”

Page 6: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

ESTADO INICIAL

Page 7: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 7

Estado inicial (I) Proyecto muy relacionado con un

depurador (gráfico): Depuradores capaces de controlar flujo de

un programa Depuradores pueden consultar estado de

un programa (variables, argumentos, registros, memoria)

Pero, ¿es un depurador lo suficientemente didáctico para estudiar el modelo de gestión de la memoria?

Estudio de los depuradores actuales

Page 8: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 8

GDB (GNU DeBugger)

El GDB es un depurador conocido Puede depurar programas en C, C++,

Pascal, Fortran, Modula2, Ada y otros Modo texto (consola) “crudo”, no

didáctico Sin embargo, cubre todas nuestras

necesidades de contenidos

Page 9: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 9

DDD

Depurador gráfico más conocido en Linux

Sólo una GUI, su motor es el GDB Permite interacción directa con el GDB Potencia GDB + Amigabilidad visual Sin embargo, sigue siendo “crudo” con

la visualización de la memoria (simplemente encierra el texto del GDB en ventanas)

Page 10: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 10

Page 11: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 11

Estado inicial (II): Conclusión

Mismo problema en todos los depuradores estudiados: visualización pobre de la memoria

Esto es lógico, dado el fin de un depurador: un programador no suele estar interesado en el modelo de gestión de la memoria

No encontraremos un depurador que funcione como visualizador didáctico

Detalle interesante: potencia y capacidad del GDB de aceptar varios lenguajes

Page 12: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

METODOLOGÍA

Page 13: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 13

Metodología (I)

Se ha seguido un ciclo de vida en cascada

Se ha utilizado UML para diseñar y documentar

Documentación durante el desarrollo

Otras metodologías (PUD, …) eran excesivas para este proyecto

Page 14: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 14

Metodología (II)

Page 15: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

RECURSOS UTILIZADOS

Page 16: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 16

Recursos utilizados

Se ha tratado de usar software libre cuando ha sido posible: Borland Kylix 3 Open Edition, IDE

Builder(en Windows: Borland C++ Builder)

Herramientas GNU: GDB, GCC, GPC, GNAT, G++, G77

GNU para Windows: MinGW, Cygwin

Page 17: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

PLANIFICACIÓN Y TIEMPOS

Page 18: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 18

Planificación

Análisis: 80

Diseño: 30

Implementación: 90

Pruebas: 60

Documentación: 40

(300 horas)

Page 19: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 19

Tiempos y porcentajes

Análisis: 50

Diseño: 52

Implementación: 130

Pruebas: 18

Documentación: 50

(300 horas)

Page 20: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

ANÁLISIS

Page 21: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 21

Análisis (I)

Qué queríamos: Herramienta con potencia de depurador:

control del programa, recuperación de valores, etc.

Herramienta que visualice la memoria de forma didáctica

Herramienta que acepte el LC99 (completo) Herramienta extensible (que pueda aceptar

otros lenguajes)

Page 22: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 22

Análisis (II)

Identificación de elementos de visualización: Código fuente Código máquina (ensamblador) Pila Registros Resto de la memoria

Inspiración: depuradores + apuntes de gestión de memoria

Page 23: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 23

Análisis (III)

Estudio de los depuradores Dos hechos interesantes:

Potencia del GDB al aceptar varios lenguajes

Que DDD (y otros) utilizaran al GDB

Page 24: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 24

Análisis (IV)

Idea: Diseñar e implementar un visualizador que use GDB (como el DDD)

Problema: GDB no acepta código generado por compilador de LC99 (genera “código P”)

Solución: cambiar código generado por compilador de LC99 (backend)

Page 25: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 25

Estudio del GDB

¿Cómo obtiene el GDB información semántica sobre un programa?

Entrada GDB: ejecutable Hay que compilar con la opción “-

g” ¿Qué ocurre cuando se especifica

esa opción?

Page 26: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 26

Los STABs

Con opción “-g”, el compilador añade más líneas al código generado (ensamblador)

Cada una de esas líneas se llama STAB STAB=Symbol TABle: codifican

información semántica Los STABs especifican los nombres de las

variables, argumentos, funciones; línea fuente en que han sido declarados; de qué tipo son; y su lugar en memoria

.stabs “c(0,1)”,128,0,2,-4

Indica que hay una variable “c” entera enla posición -4 a partir del registro %ebp

Page 27: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 27

Nuevo compilador de LC99

Habrá que cambiar el código generado: De “código P” a código ensamblador AT&T i386

(parecido a Intel pero con pequeñas diferencias) Añadir líneas de STAB al código i386 generado

Page 28: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

DISEÑO

Page 29: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 29

Diseño (I)

Page 30: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 30

Diseño (II)

“Intermediario” entre el GDB y el visualizador (VDE)

Principio de diseño: encapsular lo que cambia

El intermediario envía órdenes y recoge respuestas del GDB y se las pasa al VDE

Page 31: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 31

Diseño (III)

Page 32: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 32

Diseño (IV)

Realimentación entre diseño e implementación: nuevas ideas que han hecho necesario rediseñar

Patrones de diseño: Mediator, Singleton

Page 33: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

IMPLEMENTACIÓN

Page 34: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 34

Implementación (I)

Lenguaje utilizado: C++ Experiencia Se usa la librería LibC

GUI (Kylix/Builder) Propuesta inicial: Delphi Productividad Experiencia

Page 35: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 35

Implementación (II): fork

VDE

VDE VDE (hijo)

GDB

fork

exec

pipe

dup

En Windows: Win32 API• CreateProcess()• Anonymous Pipes

Page 36: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 36

Implementación (III): GDB

Intermediario analiza y estructura repuestas de salida estándar del GDB

Respuestas del GDB fijas Posibilidad de usar GDB MI

(Machine Interface), pero sólo disponible a partir de GDB 5.0

Page 37: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 37

Implementación (IV): hilos

GUI

Intermediario

GDB

Usuario

acción

petición

comando

respuesta

respuesta

respuesta (visual)

Proceso de comunicación:

VDE

Page 38: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 38

Implementación (V): hilos

GUI

Intermediario

GDB

Usuario

acción

petición

comando

respuesta

respuesta

respuesta (visual)VDE

VDE::Hilo

Para evitar bloqueos se utiliza concurrencia (hilos):

Page 39: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 39

Implementación (VI): bugs

VDE soluciona bugs del GDB Información incorrecta si paramos el

GDB en entrada o salida de función VDE detecta esos casos y, con la

información del instante anterior, construye visualización correcta

Si no hubo paso anterior, simplemente no etiqueta valores críticos

Page 40: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 40

Implementación (VII)

Sentido de la pila: ¿Hacia dónde crece

la pila? Literatura muestra

ambos sentidos Ningún argumento

concluyente: se deja elegir al usuario

Page 41: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 41

Implementación (VIII)

No se puede ir hacia atrás en el flujo de ejecución

Sin lo anterior, es difícil comparar la pila en dos estados diferentes

Solución: poder capturar estado de pila (snapshot), para comparar más tarde

Page 42: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 42

Page 43: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 43

Scripts adaptadores (I) Para algunos lenguajes, el visualizador

no se comporta adecuadamente Sería más correcto decir que el GDB no

se comporta correctamente Enlace estático no se etiqueta como

STAB (el LC99 sí lo hace; GPC y GNAT, obviamente, no)

Esto provoca que el enlace estático no se etiquete (aunque sí aparece su valor, adónde apunta, etc.)

Page 44: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 44

Scripts adaptadores (II)

Implementación de scripts en Perl que modifican código generado (GPC y GNAT)

GPC no funciona con GDB, script logra que funcione

Page 45: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 45

Scripts adaptadores (III)

C (gcc)C++ (g++)Fortran (g77)

Ada (gnat)

Pascal (gpc)

LC99 (lc99)

script

script

Page 46: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

PRUEBAS

Page 47: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 47

Pruebas (I)

Se plantearon varias pruebas: Batería de programas Pruebas de usuario Pruebas de sistema o entorno Pruebas de memoria

Page 48: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 48

Pruebas (II) Batería de programas:

Procedimientos anidados (Pascal, Ada, LC99) Recursividad Estructuras complejas (arrays, structs) Clases y objetos (C++) Hilos, tareas (Ada) Punteros (C) Distintos pasos de parámetros (valor,

referencia) Varios fuentes (uses, include) Optimización (gcc) No optimizar

Page 49: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 49

Pruebas (III)

Pruebas de usuario: se repartió el VDE a diferentes usuarios

Pruebas de sistema: Windows ME, 2k, XP; Linux (entornos KDE, GNOME, …)

Pruebas de memoria (C++): se usó MemProof para validar que no se pierde memoria

Page 50: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

RESULTADOS

Page 51: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 51

Resultados

VDE capaz de visualizar programas LC99

VDE capaz (por usar GDB) de visualizar programas C, C++, Pascal, Ada95 y Fortran77 (probados), y otros

Visualización etiquetada y estructurada

Potencia de un depurador gráfico Disponible en Linux y Windows

Page 52: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 52

Page 53: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 53

Page 54: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 54

Página web

Durante el desarrollo del proyecto se mantuvo una página web para la comunicación alumno-tutores

Esa página web se ha ido transformando en la página del proyecto

Incluye fuentes, ejecutables, capturas, documentación y enlaces

Page 55: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 55

Conocimientos aplicados

Procesadores de Lenguajes Ingeniería del Software Programación Orientada a Objetos,

GUI Programación en C, Pascal, Perl, etc. Concurrencia Sistemas Operativos Gráficos por Computador

Page 56: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

TRABAJO FUTURO

Page 57: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 57

Ampliaciones

Construcción de nuevos compiladores compatibles con el VDE

Adaptación de compiladores antiguos

GDB/MI Uso de otros depuradores (jdb, …) Gestión interna del heap

Page 58: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

FIN

Page 59: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 59

Referencias (I) [PER 98] “Traductores e Intérpretes”. E.U.I.-U.L.P.G.C., Miguel Ángel

Pérez Aguiar, 1998. [SAN 99] Proyecto de fin de carrera de la E.U.I.-U.L.P.G.C. "Prototipo

de Compilador Didáctico del Lenguaje LC99", Tomos I y II, Orlando Sánchez Montesdeoca, 1999.

[PEM 82] "P4. Pascal Implementation: Compiler and Assembler/Interpreter", Steven Pemberton and Martin Daniels, 1982.

[ROS 96] "How Debuggers Work", Jonathan Rosenberg, 1996. [UML 99] “El Lenguaje Unificado de Modelado”, Grady Booch, James

Rumbaugh, Ivar Jacobson, Ed. Addison-Wesley, 1999 [GAM 95] "Patrones de Diseño", Erich Gamma, Richard Helm, Ralph

Johnson, John Vlissides, 1995. [TRU 97] Apuntes de Fundamentos Gráficos por Computador. E.U.I.-

U.L.P.G.C., Agustín Trujillo Pino, 1997. [ROD 00] Técnicas y Metodología Orientada a Objetos. C++. Juan

Carlos Rodríguez del Pino, Margarita Díaz Roca, José Daniel González Domínguez, 2000.

Page 60: VISUALIZADOR DIDÁCTICO DE EJECUCIÓN PARA LC99 Tutores: Miguel Ángel Pérez Aguiar José Fortes Gálvez Facultad de Informática Universidad de Las Palmas de.

10/04/23 Visualizador Didáctico de Ejecución 60

Referencias (II) Página oficial del depurador GDB: http://www.gnu.org/software/gdb/gdb.html Más información sobre el GDB:

http://developer.apple.com/techpubs/macosx/DeveloperTools/ Formato STABS del GDB: http://sources.redhat.com/gdb/onlinedocs/stabs.html Página web del proyecto LC99:

http://serdis.dis.ulpgc.es/~itis-ti2/PrototipodeCompiladorDidacticoLC99/ Visualización de la máquina P: http://rw4.cs.uni-sb.de/~martin/COMP/info.html Página de la interfaz gráfica DDD: http://www.gnu.org/software/ddd/ Página oficial del GCC: http://gnuwww.epfl.ch/software/gcc/gcc.html Cómo añadir un front-end al GCC:

http://ldp.kernelnotes.de/HOWTO/GCC-Frontend-HOWTO.html#toc5 Página oficial del GPC: http://www.gnu-pascal.de Página oficial del GNAT: http://www.gnat.com Página oficial de MINGW: http://www.mingw.org Página oficial de CYGWIN: http://www.cygwin.com Información sobre el 80386: http://www.alpertron.com.ar/80386.HTM Comunicación entre procesos en Win32:

http://bdn.borland.com/article/0,1410,10387,00.html