El objetivo original era portar DITools a GNU/Linux™. Al final resulto más viable implementarlo desde cero, pero basándose en los mecanismos originales. La herramienta cumple los siguientes puntos y propiedades:
No requiere nada más que un ejecutable para comenzar a trabajar. La herramienta permite instrumentar un programa del cual tan sólo se tiene el binario.
Es muy veloz y ligera. El principal "target" de esta herramienta es la instrumentación de aplicaciones de cálculo intensivo. El impacto que debe tener sobre la velocidad de ejecución ha de ser mínimo. Durante la ejecución del programa que se instrumenta el código de la librería suele tener un coste constante (O(1)); y lo más breve posible.
Basada en estándares. La herramienta trabaja y respeta los estándares al máximo posible. De esta forma se asegura su robustez frente a nuevas versiones del sistema operativo "host" y frente a diferentes lenguajes y compiladores. Esta aplicación esta basada en el estándar ELF debido a que está pensada fundamentalmente para entornos Unix™ y similares.
Altamente portable. En principio, la teoría dice que ciñéndose y respetando estrechamente los estándares al máximo, se puede obtener un software que funcione en cualquier plataforma realizando una serie de cambios mínimos. De antemano se sabe que esto es muy difícil, pero aún así el esfuerzo siempre facilita el "porting" a otras plataformas.
Fácil de usar. Ofrece un control de errores adecuado y una interfaz sencilla de usar, apartando lo máximo posible al usuario de las particularidades del SO y del formato ELF. Además es resistente a errores, ya sean por parte del usuario o por sucesos inesperados provocados por la implementación de ELF del SO.
Ofrece una API sencilla y potente. La idea consiste en escribir un mecanismo de instrumentación mínimo, pero completo, para que el desarrollador goce de la máxima flexibilidad a la hora de crear una herramienta de instrumentación.
Una herramienta libre realizada con software libre. Esta herramienta ha sido escrita desde cero con herramientas libres (GNU C Compiler, GNU Make, GNU/Linux™, DocBook, ...) y como respuesta se entregará como una aplicación libre. Debido a que en esencia es un DSO y se enlaza en tiempo de ejecución con la aplicación que se instrumenta se entregará bajo una licencia LGPL[1] la documentación bajo una licencia FDL[2].
Se introducen cambios, pero en esencia el funcionamiento es muy similar al del DITools original. Se ha de tener en cuenta que OMPItrace de SGI® confía en gran medida en el funcionamiento actual de DITools.
El proyecto se entrega implementado al 100% sólo para GNU/Linux™ sobre la plataforma IA32. Inicialmente se da sólo soporte a las versiones del kernel 2.4.x y 2.6.x con GNU C Library 2.2.x o 2.3.x.
El resto de versiones para otras plataformas son completamente funcionales a excepción de que no implementan el mecanismo de interposición por "callback".
En total se da soporte a todas estas plataformas:
GNU/Linux™ (kernel 2.4.x o 2.6.x) sobre INTEL® 386, PowerPC™ y PowerPC™ 64.
Solaris 8, 9 y 10 sobre SPARC para 32 y 64 bits.
Irix sobre MIPS® para 32 y 64 bits.
El objetivo de dar soporte a todas estas plataformas es demostrar que el código es altamente reciclable y muy fácil de adaptar a nuevos escenarios.
[1] | Acrónimo para "The GNU Lesser General Public License". |
[2] | Acrónimo para "The GNU Free Documentation License". |