Análisis de código dinámico
La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la
versión revisada el 26 de mayo de 2021; las comprobaciones requieren
2 ediciones .
Análisis de código dinámico ( ing. Análisis de programa dinámico ): análisis de software , realizado mediante la ejecución de programas en un procesador real o virtual (a diferencia del análisis estático ). Las utilidades de análisis dinámico pueden requerir la carga de bibliotecas especiales, la recompilación del código del programa. Algunas utilidades pueden instrumentar código ejecutable durante o antes de la ejecución. Para ser más eficiente, el análisis dinámico requiere que el programa bajo prueba tenga suficiente entrada para obtener una cobertura de código más completa . También se debe tener cuidado para minimizar el impacto de la instrumentación en la ejecución del programa bajo prueba (incluido el tiempo).
Ejemplos de utilidades
- Valgrind [1] ( en ), ejecuta un programa en un procesador virtual, puede detectar errores de memoria (por ejemplo, relacionados con el uso incorrecto de malloc y funciones libres ), condiciones de carrera en programas multiproceso .
- Alfiler [1]
- DinamoRIO [1]
- Dmalloc , una biblioteca para verificar la asignación y desasignación de memoria, así como las fugas de memoria, la liberación, etc. El programa debe volver a compilarse y el archivo de encabezado C dmalloc.h debe incluirse en todos los archivos para obtener informes más precisos.
- jTracert (enlace descendente) , un agente de Java (cargado con el argumento -javaagent:) que instrumenta el código de las aplicaciones existentes que se ejecutan en la máquina virtual JVM y genera automáticamente diagramas de secuencia .
- Daikon es una implementación de un detector invariante dinámico. Busca valores calculados por el programa y busca propiedades que eran verdaderas al inicio y que tienen más probabilidades de serlo en todas las ejecuciones.
- DynInst es una biblioteca que modifica el código en tiempo de ejecución. Útil cuando se desarrollan programas de análisis dinámico, ayuda a agregar puntos de depuración (sondas) al software bajo prueba. En general, Dyninst no requiere que los programas se vuelvan a compilar; sin embargo, los ejecutables no despojados y los ejecutables con información de depuración son más fáciles de instrumentar.
- Holodeck by Security innovation es una herramienta de simulación de fallas para el análisis dinámico y las pruebas de fragilidad/seguridad de los programas de Windows.
- IBM Rational Purify : detecta principalmente errores al trabajar con memoria (matriz fuera de los límites, fugas de memoria).
- BoundsChecker : Características similares a IBM Purify.
- VB Watch agrega código de análisis de tiempo de ejecución a los programas de Visual Basic para monitorear su rendimiento, pila de llamadas, seguimiento de ejecución, objetos instanciados, variables y cobertura de código.
- Insure++ es un analizador de memoria y detector de errores. El componente Inuse le permite ver gráficamente el historial de asignación de memoria, analizar el uso del almacenamiento dinámico , buscar fugas de memoria, etc.
- Intel Thread Checker es un analizador de errores en aplicaciones de subprocesos múltiples. Detecta errores de contención de datos y situaciones de interbloqueo. Funciona con aplicaciones para Windows y Linux.
- AJEDREZ : herramienta de prueba .Net ( administrada ) y Win32 de subprocesos múltiples, 64 programas
La mayoría de los programas de análisis de rendimiento utilizan técnicas de análisis de programas dinámicos
.
Ejemplos históricos
- IBM OLIVER : un sistema interactivo de prueba y depuración de CICS que utiliza un simulador de conjunto de instrucciones
- Analizador de programas por lotes SIMON , sistema de pruebas y depuración mediante simulador
- SIMMON : simulador interno de IBM utilizado para desarrollar componentes del sistema operativo, utilidades y procesadores de E/S
Véase también
Notas
- ↑ 1 2 3 Pruebas estáticas y dinámicas en el ciclo de vida del desarrollo de software . Consultado el 14 de enero de 2016. Archivado desde el original el 7 de septiembre de 2018. (indefinido)
Enlaces