Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Trazas
Dpto. de Ingeniera de Sistemas Telemticos http://www.lab.dit.upm.es/~lprg/
febrero 2010
Puesta a punto
fallo serio
desarrollo
falla
pruebas
pasa detalle
pruebas de aceptacin
pasa
falla
febrero 2010
Trazas
Trazas
Segn va ejecutando el programa
estoy aqu ... esta variable vale tanto ...
febrero 2010
Trazas
print
Se pueden introducir sentencias explcitas
System.out.println(estoy aqu ...); System.out.println(variable= + valor);
Problemas
hay que editar el programa cada vez que queremos cambiar una traza cuando se entrega el programa hay que editarlo y quitar las trazas si el programa est compilado y algo falla, hay que editarlo para ver qu pasa
febrero 2010 Trazas 4
log.Logger
Trazas programadas a diferentes niveles
LOGGER.info(estoy aqu ...); LOGGER.fine(variable= + valor); LOGGER finer(condicin= + condicin);
febrero 2010
Trazas
package log.Logger
Creado especficamente para las prcticas de LPRG Inspirado en java.util.logging de la librera de Java, pero adaptado a la asignatura Es necesario incluir el paquete import log.Logger normalmente residir en /log/Logger.java Y crear un logger Logger LOGGER = Logger.getLogger(NOMBRE)
febrero 2010
Trazas
O, incluso el de un mtodo
private static final Logger LOGGER= Logger.getLogger("paquete.clase.metodo")
febrero 2010
Trazas
Nivel de detalle
900 800 700 500 400 300 -
febrero 2010
OFF
CONFIG
FINE
FINER
FINEST
ALL
Trazas 8
Nivel de detalle
OFF No se genera traza alguna. SEVERE Se usa para trazar errores catastrficos, que son aquellos de los que no hay recuperacin posible, provocando la terminacin del programa. La traza recoge el fallo causante de la detencin. WARNING Se usa para trazar errores peligrosos, para los que hay previsto un mecanismo de supervivencia. INFO Trazas normales: para ir viendo lo que pasa. CONFIG Se usan tpicamente al arrancar un programa para trazar la configuracin inicial, que frecuentemente se lee de alguna parte. FINE Informacin de detalle, tpicamente til para localizar errores (depuracin). FINER Informacin de ms detalle, tpicamente til para localizar errores (depuracin). FINEST Informacin de mximo detalle, tpicamente til para localizar errores (depuracin). ALL Se traza todo, a cualquier nivel.
febrero 2010 Trazas 9
Niveles
log.severe (String); log.warning (String); log.info (String); log.config (String); log.fine (String); log.finer (String); log.finest (String);
.level= INFO
febrero 2010
Trazas
10
$HOME/java.logger
# mnimo nivel que aparecer por consola o fichero .level= ALL # mnimo nivel que aparecer por consola (System.err) .console.level= ALL # mnimo nivel que aparecer en fichero .file.level= SEVERE .file.name= J$.log # mnimo nivel que aparecer del logger indicado # NOMBRE_DEL_LOGGER= NIVEL paquete= nivel paquete.clase= nivel paquete.clase.metodo= nivel
febrero 2010
Trazas
11
ejemplo
class Polinonio2
package ejemplo; public class Polinomio2 { private double a, b, c; public Polinomio2(double a, double b, double c) { this.a = a; this.b = b; this.c = c; public double[] raices() throws Exception { } double determinante = (b * b) - (4 * a * c); public double y(double x) { return (((a*x)+b)*x)+c; } if (determinante < 0) throw new Exception("no hay raices reales"); double double double return } }
febrero 2010 Trazas 12
ejemplo
Trazas INFO
package ejemplo; import log.*; public class Polinomio2 { private static final Logger LOGGER = Logger.getLogger("ejemplo.Polinomio2"); public Polinomio2(double a, double b, double c) { LOGGER.info("new Polinomio2 " + a + " " + b + " " + c); ... public double y(double x) { LOGGER.info("y " + x); ... public double[] raices() throws Exception { LOGGER.info("raices"); ...
febrero 2010
Trazas
13
ejemplo
Trazas FINE
public double[] raices() throws Exception { LOGGER.info("raices"); double determinante = (b * b) - (4 * a * c); LOGGER.fine("determinante= " + determinante); ...
febrero 2010
Trazas
14
ejemplo
Trazas FINEST
public double[] raices() throws Exception { LOGGER.info("raices"); double determinante = (b * b) - (4 * a * c); LOGGER.fine("determinante= " + determinante); if (determinante < 0) throw new Exception("no hay raices reales"); double t = Math.sqrt(determinante); double r1 = (-b + t) / (2 * a); LOGGER.finest("r1= " + r1); double r2 = (-b - t) / (2 * a); LOGGER.finest("r2= " + r2); return new double[] { r1, r2 }; }
febrero 2010 Trazas 15
ejemplo
Probador
import ejemplo.*; public class Probador { public static void main(String[] argumentos) throws Exception { Polinomio2 polinomio= new Polinomio2(1, -3, 2); double[] raices= polinomio.raices(); System.out.println("raiz= " + raices[0]); System.out.println("raiz= " + raices[1]); } }
febrero 2010
Trazas
16
ejemplo
Ejecucin
bash-3.1$ java Probador java.logger <- C:\Documents and Settings\<usuario>\java.logger raiz= 2.0 raiz= 1.0
febrero 2010
Trazas
17
ejemplo
Ejecucin
bash-3.1$ java Probador java.logger <- C:\Documents and Settings\<usuario>\java.logger ejemplo.Polinomio2 [info]: new Polinomio2 1.0 -3.0 2.0 ejemplo.Polinomio2 [info]: raices raiz= 2.0 raiz= 1.0
febrero 2010
Trazas
18
ejemplo
Ejecucin
bash-3.1$ java Probador java.logger <- C:\Documents and Settings\<usuario>\java.logger ejemplo.Polinomio2 [info]: new Polinomio2 1.0 -3.0 2.0 ejemplo.Polinomio2 [info]: raices ejemplo.Polinomio2 [fine]: determinante= 1.0 raiz= 2.0 raiz= 1.0
febrero 2010
Trazas
19
ejemplo
Ejecucin
bash-3.1$ java Probador java.logger <- C:\Documents and Settings\<usuario>\java.logger ejemplo.Polinomio2 [info]: new Polinomio2 1.0 -3.0 2.0 ejemplo.Polinomio2 [info]: raices ejemplo.Polinomio2 [fine]: determinante= 1.0 ejemplo.Polinomio2 [finest]: r1= 2.0 ejemplo.Polinomio2 [finest]: r2= 1.0 raiz= 2.0 raiz= 1.0
febrero 2010
Trazas
20
10
Jerarqua de nombres
Si ponemos
getLogger(a.b.m)
1. Busca en java.logger a.b.m = ... 2. si no lo encuentra, busca a.b = ... 3. si no lo encuentra, busca a = ... 4. si no lo encuentra, usa .level = ...
febrero 2010 Trazas 21
Traza en ...
Consola
.console.level = ... nivel a partir del cual se registra
Fichero
.file.level= ... .file.name= J$.log fecha y hora
febrero 2010
Trazas
22
11
Conclusiones
Cuando un programa no funciona
las trazas descubren cmo se llega al fallo
febrero 2010
Trazas
23
12