Ejercicio 1.4: Creación de sondas más avanzadas

Antes de empezar, complete el Ejercicio 1.3: Despliegue de la sonda.

ProbeKit se puede utilizar para resolver muchos problemas reales relativos al análisis en tiempo real y la depuración. Ya ha aprendido los conceptos básicos sobre cómo escribir y desplegar sondas. En esta lección y la siguiente no se describirán las actividades, sino que se proporcionarán sugerencias para aquellas sondas que pueda escribir para investigar sus propias aplicaciones.

Investigación de una excepción

Supongamos que, ocasionalmente, algún método de un servlet genera una excepción. El mensaje del registro que aparece no resulta muy útil; no indica de una forma clara cuál es el problema. Para obtener más información, puede escribir una sonda que se ejecute cada vez que el método genere una excepción, y el código Java del fragmento de la sonda puede registrar el mensaje de la excepción y también los argumentos del método. Esto le ayudará a ver por qué se ha generado la excepción.

Cuando escriba y despliegue esta sonda, tenga en cuenta los puntos siguientes:

Investigación del rendimiento impredecible de un método

Este ejemplo de sonda es bastante complicado. Digamos que se trata de un método del programa que normalmente se ejecuta rápidamente pero que, ocasionalmente, tarda más tiempo del debido (más de 100 mseg., por ejemplo).

Puede escribir una sonda que tome nota de las horas de entrada y salida cada vez que se ejecute el método. Cuando el tiempo de ejecución sea corto, la sonda no hará nada. Cuando el tiempo de ejecución sea largo, la sonda informará sobre los argumentos del método y demás información importante sobre el estado del programa en ese preciso instante. Esto le permite determinar las circunstancias que provocan tiempos de ejecución mayores.

Cuando escriba la sonda, tenga en cuenta los puntos siguientes:

En la entrada del método, esta sonda registra la hora actual. En la salida del método, la sonda compara la hora actual y la hora de entrada registrada, y si ha transcurrido una cantidad de tiempo mayor de la especificada (la cantidad que se haya especificado en "thresholdDuration"), imprime un informe, utilizando el archivo System.out.

Investigación del rendimiento impredecible de un método recursivo o de varias hebras

La sonda que acabamos de explicar no funciona en aquellos métodos que sean recursivos (directa o indirectamente), y no funciona en aquellos métodos que puedan ejecutarse en varias hebras simultáneamente. Para resolver el problema recursivo, puede registrar las horas de entrada en una pila; para resolver el problema de varias hebras, puede almacenar la pila en una variable ThreadLocal.

He aquí lo que necesita para crear una versión de la sonda libre de hebras y de problemas recursivos:

Para proseguir con la guía de aprendizaje, vaya al Ejercicio 1.5: Utilización de una biblioteca de tiempo de ejecución para obtener una lógica de sonda más compleja.

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Todos los derechos reservados.