tcov, disponible para estaciones de trabajo Sun y otras máquinas SPARC que ejecuten SunOS, proporciona estadísticas de ejecución que describen el número de veces que fue ejecutada cada sentencia del código fuente. Es muy fácil de usar. Para ilustrarlo, asumamos que tenemos un programa fuente llamado foo.c. Los siguientes pasos crean un perfil de bloques básicos:
% cc -a foo.c -o foo
% foo
% tcov foo.c
La opción -a le indica al compilador que incluya el soporte necesario para tcov.2 Se crean varios archivos durante el proceso. Uno llamado foo.d acumula una historia de las frecuencias de ejecución adentro del programa foo. Esto es, los datos antiguos se actualizan con datos nuevos cada vez que se ejecuta foo, así que puede usted obtener una imagen panorámica de qué sucede adentro de foo, dada una variedad de conjuntos de datos. Sólo recuerde limpiar los datos antiguos se quiere comenzar desde cero. El perfil en sí se guarda en un archivo llamado foo.tcov.
Veamos una ilustración. A continuación está un pequeño programa en C que realiza una ordenación de 10 enteros mediante el algoritmo de la burbuja:
int n[] = {23,12,43,2,98,78,2,51,77,8};
main ()
{
int i, j, ktemp;
for (i=10; i>0; i--) {
for (j=0; j<i; j++) {
if (n[j] < n[j+1]) {
ktemp = n[j+1], n[j+1] = n[j], n[j] = ktemp;
}
}
}
}
tcov produce un perfil de bloques básicos que contiene el conteo de la ejecución de cada línea del código fuente, además de algunas estadísticas de resumen (que no se muestran):
int n[] = {23,12,43,2,98,78,2,51,77,8};
main ()
1 -> {
int i, j, ktemp;
10 -> for (i=10; i>0; i--) {
10, 55 -> for (j=0; j<i; j++) {
55 -> if (n[j] < n[j+1]) {
23 -> ktemp = n[j+1], n[j+1] = n[j], n[j] = ktemp;
}
}
}
1 -> }
Los números a la izquierda le indican el número de veces que se entró a cada bloque. Por ejemplo, puede ver que a la rutina sólo se entró una vez, y que el conteo más alto ocurre en la condición n[j] < n[j+1]. tcov muestra más de un conteo sobre una línea en lugares donde el compilador ha creado más de un bloque.




