UD 2. IDE Eclipse 4. Depurando Con Eclipse

15
1 / 15 Depurando con Eclipse (Debugging) Veamos cómo depurar con Eclipse. Contenidos 1. Introducción ............................................................................................................ 2 1.1. ¿Qué es depurar? .......................................................................................... 2 1.2. Depuración en Eclipse ................................................................................. 2 2. Debugging in Eclipse ............................................................................................ 2 2.1. Estableciendo Puntos de ruptura (Breakpoints) ....................................... 2 2.2. Inicializando el Depurador (Debugger) ...................................................... 3 2.3. Controlando la ejecución del programa (F5, F6, F7 y F8) ....................... 5 2.4. Pestaña de breakpoints ................................................................................ 6 4.5. Evaluación de variables en el depurador (debugger) .............................. 7 2.6. Cambiando el contenido de las variables con el depurador ................... 7 2.7. Control de la visualización de las variables con Detail Formatter .......... 7 3. Depuración avanzada ........................................................................................... 9 3.1. Propiedades de los puntos de ruptura........................................................ 9 3.2. Punto de observación (Watchpoint) ......................................................... 10 3.3. Puntos de ruptura de excepciones (Exception breakpoints)................. 10 3.4. Puntos de ruptura en métodos (Method breakpoint) .............................. 10 3.5. Puntos de ruptura en la carga de clases (Breakpoints for loading classes) ................................................................................................................. 11 3.6. Filtro de pasos (Step Filter) ........................................................................ 12 3.7. Hit Count ........................................................................................................ 13 3.8. Remote debugging....................................................................................... 13 Note........................................................................ ¡Error! Marcador no definido. 3.9. Salto al nivel (Drop to frame) ..................................................................... 14 4. Exercise: Create Project for debugging ........................................................... 15 4.1. Create Project ............................................................................................... 15 4.2. Debugging ..................................................................................................... 15 5. Debugging Links .................................................................................................. 15

Transcript of UD 2. IDE Eclipse 4. Depurando Con Eclipse

Page 1: UD 2. IDE Eclipse 4. Depurando Con Eclipse

1 / 15

Depurando con Eclipse (Debugging)

Veamos cómo depurar con Eclipse.

Contenidos

1. Introducción ............................................................................................................ 2

1.1. ¿Qué es depurar? .......................................................................................... 2

1.2. Depuración en Eclipse ................................................................................. 2

2. Debugging in Eclipse ............................................................................................ 2

2.1. Estableciendo Puntos de ruptura (Breakpoints) ....................................... 2

2.2. Inicializando el Depurador (Debugger) ...................................................... 3

2.3. Controlando la ejecución del programa (F5, F6, F7 y F8) ....................... 5

2.4. Pestaña de breakpoints ................................................................................ 6

4.5. Evaluación de variables en el depurador (debugger) .............................. 7

2.6. Cambiando el contenido de las variables con el depurador ................... 7

2.7. Control de la visualización de las variables con Detail Formatter .......... 7

3. Depuración avanzada ........................................................................................... 9

3.1. Propiedades de los puntos de ruptura ........................................................ 9

3.2. Punto de observación (Watchpoint) ......................................................... 10

3.3. Puntos de ruptura de excepciones (Exception breakpoints) ................. 10

3.4. Puntos de ruptura en métodos (Method breakpoint) .............................. 10

3.5. Puntos de ruptura en la carga de clases (Breakpoints for loading classes) ................................................................................................................. 11

3.6. Filtro de pasos (Step Filter) ........................................................................ 12

3.7. Hit Count ........................................................................................................ 13

3.8. Remote debugging ....................................................................................... 13

Note ........................................................................ ¡Error! Marcador no definido. 3.9. Salto al nivel (Drop to frame) ..................................................................... 14

4. Exercise: Create Project for debugging ........................................................... 15

4.1. Create Project ............................................................................................... 15

4.2. Debugging ..................................................................................................... 15

5. Debugging Links .................................................................................................. 15

Page 2: UD 2. IDE Eclipse 4. Depurando Con Eclipse

2 / 15

1. Introducción

1.1. ¿Qué es depurar?

Depurar te permite ejecutar un programa interactivamente mientras ves el código fuente y las

variables durante la ejecución.

Con los puntos de ruptura (breakpoints) en el código fuente especificas donde debe parar la

ejecución del programa. Para parar la ejecución sólo si un campo es leido o modificado,

podemos usar los inspectores (watchpoints)

Una vez que el programa está parado podemos investigar variables, cambiar su contenido,

etc…

1.2. Depuración en Eclipse

Eclipse permite lanzar un programa Java en el modo Debug.

Eclipse tiene una perspectiva para el modo de depuración que nos permitirá controlar la

ejecución del programa e investigar el estado de las variables.

2. Debugging in Eclipse

2.1. Estableciendo Puntos de ruptura (Breakpoints)

Para colocar un punto de ruptura en tu código fuente, activa menú de contexto en el margen

izquierdo de tu código y selecciona Toggle Breakpoint. Se desactiva de la misma manera.

Page 3: UD 2. IDE Eclipse 4. Depurando Con Eclipse

3 / 15

Vamos a abrir el archivo ForEach.java y colocamos un punto de ruptura en la línea 18.

2.2. Inicializando el Depurador (Debugger)

Para depurar la aplicación active el menu de contexto sobre el archive deseado y

selecciona Debug As → Java Application.

Page 4: UD 2. IDE Eclipse 4. Depurando Con Eclipse

4 / 15

También podremos pulsar el botón Debug en la barra de herramientas de Eclipse.

Si no hemos definido ningún breakpoints, el programa se ejecutará normalmente.

Page 5: UD 2. IDE Eclipse 4. Depurando Con Eclipse

5 / 15

Cuando entras en el depurador Eclipse te pregunta si quieres cambiar a la

Debug perspective .

Tras contestar Si aparecerá una pantalla como la siguiente:

2.3. Controlando la ejecución del programa (F5, F6, F7 y F8)

Eclipse proporciona botones en la barra de herramientas para controlar la ejecución del

programa que estamos depurando.

Podremos usar las teclas F5, F6, F7 y F8.

Teclas de control de ejecución del depurador

tecla Descripción

Page 6: UD 2. IDE Eclipse 4. Depurando Con Eclipse

6 / 15

tecla Descripción

F5 Ejecuta la línea seleccionada y va a la siguiente línea. Si la línea es una llamada a

un método salta a sus líneas de código y las ejecuta paso a paso.

F6 F6 ejecuta las llamadas en un solo paso. Si hay una llamada de método en la

línea actual, se ejecuta la llamada al método internamente y sólo se mueve el

control a la siguiente línea.

F7 F7 sale del método que se está ejecutando y devuelve el control al método que lo

llamó.

F8 F8 dice al depurador que ejecute el código hasta el siguiente breakpoint o

watchpoint.

La denominada “pila de llamadas” muestra la parte del programa que está ejecutándose.

2.4. Pestaña de breakpoints

La pestaña (view) Breakpoints permite borrar y desactivar puntos de parada.

Para desactivar o borrar un breakpoint deberemos pulsaremos el botón correspondiente

icono. Observa la siguiente imagen.

Si tan solo queremos desactivar todos y saltárlos deberemos presionar sobre Skip all

breakpoints. Si lo vuelves a presionar se vuelven a activar.

Page 7: UD 2. IDE Eclipse 4. Depurando Con Eclipse

7 / 15

4.5. Evaluación de variables en el depurador (debugger)

La pestaña de Variables muestra los campos y variables locales en los programas en

ejecución. El depurador debe estar lanzado.

Mediante el menú desplegable (drop-down menu) podemos ver y/o cambiar el contenido de

las variables e incluso personalizar la información que presenta

2.6. Cambiando el contenido de las variables con el depurador

En la pestaña de variables podremos incluso cambiar el contenido de las variables para

hacer la ejecución.

2.7. Control de la visualización de las variables con Detail Formatter

Por defecto la pestaña de Variables view usa el toString() método para determinar como

va a mostrarse una variable.

Page 8: UD 2. IDE Eclipse 4. Depurando Con Eclipse

8 / 15

Podemos definer cómo se van a mostrar las variables usando Detail Formatter. En nuestro

ejemplo toString() method muestra la colección entre corchetes y separando por comas

los elementos y de las cadenas muestra el contenido. Si queremos modificar la forma de

presentar esta información activaremos el menu de contexto y seleccionaremos Detail

Formater. Para las cadenas podremos detallar la información según nuestros intereses.

En nuestro ejemplo hacemos que nos presenta la cadena mostrando primero el tamaño de

ésta, después unas comillas de apertura y cierre y dentro el contenido de la cadena.

Page 9: UD 2. IDE Eclipse 4. Depurando Con Eclipse

9 / 15

3. Depuración avanzada

3.1. Propiedades de los puntos de ruptura

Tras colocar el punto de ruptura podremos modificar sus propiedades activando el menú de

contexto del mismo. Podremos poner condiciones como la activación ante determinadas

condiciones.

Este es el menu de contexto del punto de ruptura.

En nuestro ejemplo le decimos que, en el bucle para, se detenga cuando lleve 25 iteraciones,

de esta manera conseguimos que se pare cuando haya escrito hasta la ‘z’.

Podemos poner condiciones que harán que se ejecute el punto de ruptura cuando sean

ciertas.

Page 10: UD 2. IDE Eclipse 4. Depurando Con Eclipse

10 / 15

3.2. Punto de observación (Watchpoint)

Un watchpoint es un punto de ruptura pero asignado a una variable. El depurador parará

cuando el campo sea leído o cambiado.

Para poner un punto de observación, sobre un atributo de una clase, haremos doble click

en el margen izquierdo cuando se declara la variable. En las propiedades podremos

configurar si el watchpoint debe parar durante la lectura, la escritura o ambos.

Si pulsamos Ctrl + Shift + D o Ctrl + Shift + i sobre en una variable o expresión seleccionada

se mostrará el valor. También podemos añadir un seguimiento permanente de la expresión /

variable que se mostrará en expresiones ver depuración cuando está encendido.

3.3. Puntos de ruptura de excepciones (Exception breakpoints)

Puedes poner puntos de ruptura cuando se lanza una excepción. Para definirla haremos click

en el botón Add Java Exception Breakpoint en la barra de tareas de Breakpoints.

Podremos configurar que pare cuando se captura o cuando no se captura la excepción.

3.4. Puntos de ruptura en métodos (Method breakpoint)

Page 11: UD 2. IDE Eclipse 4. Depurando Con Eclipse

11 / 15

Un punto de ruptura en un método se define hacienda doble click en el margen izquierdo del

editor junto a la cabecera del método.

Podremos configurar si queremos que pare el programa antes de entrar o después de salir

del método.

3.5. Puntos de ruptura en la carga de clases (Breakpoints for loading classes)

Se parará la ejecución del programa cuando se carga una clase.

Para poner un punto de ruptura cuando se carga una clase, active el menu de contexto en la

clase en la vista Outline y elije la opción Toggle Class Load Breakpoint.

Page 12: UD 2. IDE Eclipse 4. Depurando Con Eclipse

12 / 15

También podremos hacer doble click en el borde izquierdo del editor de Java junto a la

definición de la clase.

3.6. Filtro de pasos (Step Filter)

Podemos definir que ciertos paquetes deben saltarse depurando.

Esto es útil si usas un esquema o plantilla (framework) para chequear las clases. Este

paquete puede configurarse Window → Preferences → Java → Debug → Step Filtering. O

cuando entramos (F5) en un método que puede entrar en las bibliotecas externas (como

Java) y es posible que no lo necesitemos. Podemos añadir un filtro en las preferencias y que

no incluyan los paquetes.

Page 13: UD 2. IDE Eclipse 4. Depurando Con Eclipse

13 / 15

3.7. Contador de visitas o de paso( Hit Count)

Para cada punto de ruptura podemos especificar un contador de paso en propiedades. La

aplicación es detenida cada vez que el punto de ruptura ha sido ejecutado el número de

veces definido en el contador.

3.8. Depuración remota (Remote debugging)

Eclipse te permite depurar aplicaciones que se ejecutan en otra máquina virtual de Java o

incluso en otra máquina.

Para habilitar la depuración remota necesitamos inicializar la aplicaicón Java con ciertas

banderas, como en el siguiente ejemplo.

java -Xdebug -Xnoagent \

-Djava.compiler=NONE \

-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005

Page 14: UD 2. IDE Eclipse 4. Depurando Con Eclipse

14 / 15

3.9. Salto a otro nivel (Drop to frame)

Eclipse nos permite seleccionar cualquier nivel (frame) en la “pila de llamadas” durante la

depuración y configure el JVM para restablecer dicho punto.

Esto posibilita la reejecución de una parte del programa. Tenga en cuenta que las variables

que hayan sido modificadas por el código que está corriendo permanecerán modificadas.

Para usar esta característica, selecciona el nivel en tu pila y presiona el botón Drop to

Frame en la barra de tareas en la vista Debug.

Nota

Los registros y datos externos no se veran afectados por el reset. Por ejemplo si escribes

una entrada en la base de datos y después saltas a una frame previa, esta entrada estará

en la base de datos.

La siguiente pantalla describe cómo resetear. Si reseteamos el bucle for, el

campo result no vuelve a su valor inicial y por lo tanto el bucle no se ejecuta como si

reseteasemos a un punto previo.

Page 15: UD 2. IDE Eclipse 4. Depurando Con Eclipse

15 / 15

4. Ejercicio: Creando proyecto para depurar

4.1. Crea un proyecto con las siguientes clases

public class Counter {

private int result = 0;

public int getResult() {

return result;

}

public void count() {

for (int i = 0; i < 100; i++) {

result += i + 1;

}

}

}

public class Main {

/**

* @param args

*/

public static void main(String[] args) {

Counter counter = new Counter();

counter.count();

System.out.println("We have counted "

+ counter.getResult());

}

}

4.2. Depurando

Coloca un punto de rupture en la clase Counter class. Depura tu programa y sigue la

ejecución del método count.

Define un Detailed Formatter para tu Counter que use el método getResult. Depura tu

programa de nuevo y verifica que tu nuevo formato es usado.

Borra tu breakpoint y añade un breakpoint para la carga de la clase. Depura tu programa de

Nuevo y verifica que el depurador para cuando la clase es cargada.

5. Enlaces de depuración

Eclipse IDE book from Lars Vogel

http://www.eclipse.org/articles/Article-Debugger/how-to.html How to develop your own

debugger