Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 19

Depuración y pruebas en Java

[4.1] ¿Cómo estudiar este tema?

[4.2] Pruebas y depuración de programas en Java

[4.3] Depuración en Eclipse

[4.4] Depuración en NetBeans

TEMA
Esquema

TEMA 4 – Esquema
Desarrollo de aplicaciones

Depuración de
Eclipse Java Debugger (JDB) NetBeans

2
programas

Ejecución interactiva Breakpoints Watchpoints Línea de comandos Depurador


Breakpoints
v isual
Plataformas de Desarrollo de Software

© Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Ideas clave

4.1. ¿Cómo estudiar este tema?

Para estudiar este tema lee las Ideas clave que encontrarás a continuación.

En este tema vamos a estudiar diferentes aspectos de la depuración de programas y


fase de pruebas en Java.

Comenzaremos motivando la necesidad y cómo se realiza esta fase de pruebas y en


particular el primer paso que es la depuración del código de una aplicación en Java.

Posteriormente, detallaremos como se hace dicha depuración en los dos entornos de


desarrollo integrado que hemos visto en los temas anteriores, Eclipse y NetBeans.

Veremos que, aunque en general funcionan con respecto a la depuración de manera


similar, cada uno tiene algunas características propias que lo hacen más sencillo de
usar para según qué casos.

Lo importante de este tema es que el alumno comprenda los pasos básicos para
depurar el código de una aplicación en Java usando los dos IDE estudiados,
Eclipse y NetBeans.

4.2. Pruebas y depuración de programas en Java

En aplicaciones grandes compuestas de muchas clases y métodos, asegurar que cuando


se implementa su código va a funcionar a la primera sin errores, es muy complicado.
Aquí toma importancia la fase de pruebas del desarrollo software, donde se realizan
una gran cantidad de baterías de pruebas de diverso tipo (estáticas, dinámicas, unitarias,
de caja blanca, de caja negra, etc).

No está dentro ámbito de esta asignatura el estudio de cada tipo de pruebas, pero el
propósito de todas ellas es detectar posibles errores en el software. Aunque
muchas veces, aunque se detecte que está ocurriendo un error cuando la aplicación se
está ejecutando, encontrar dicho error en el código puede ser una tarea nada trivial.

TEMA 4 – Ideas clave 3 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Entonces, es conveniente depurar el código paso a paso para tratar de encontrar el


error.

La depuración de software o debugging consiste en ejecutar un programa de


modo interactivo vigilando lo que ocurre a cada paso y los valores de las variables
durante la ejecución.

Para esta tarea podemos usar por ejemplo el Java Debugger (JDB), un depurador
simple para clases Java desde línea de comandos. Para depurar un código hace falta
ponerle los llamados beakpoints o sea los puntos del código donde queremos que se
pare el depurador y nos vaya dando datos. Esto es factible hacerlo a través de la línea de
comandos, pero de nuevo puede ser muy complejos para aplicaciones reales grandes.

Entonces al igual que pasaba con las GUI, es mucho más útil y sencillo utilizar las
facilidades que aportan los dos IDE para Java que estamos estudiando, Eclipse y
NetBeans. Así que en las siguientes dos secciones veremos cómo depurar programas en
esos dos IDE.

4.3. Depuración en Eclipse

En el workbench de Eclipse se pueden lanzar los programas que se están desarrollando


tanto en modo normal de ejecución (Run) como en modo depuración (Debug). En este
último modo se puede parar y reanudar la ejecución, se pueden inspeccionar
variables y evaluar las expresiones.

Como hemos mencionado en la sección anterior, mediante los breakpoints en el código


se especifica dónde (en qué instrucción del código) se debe parar la ejecución del
programa. Además, para parar la ejecución cuando un determinado atributo se modifica
o se accede a él, se puede especificar otro punto de parada llamado watchpoint.

En Eclipse, para añadir un breakpoint en una línea de código basta con hacer doble
click sobre su número, o bien seleccionar con el botón derecho sobre el número y pulsar
sobre Toggle Breakpoint como se muestra en la siguiente captura de pantalla.

TEMA 4 – Ideas clave 4 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Figura 1. Seleccionar Toggle Breakpoint. Fuente:


http://www.vogella.com/tutorials/EclipseDebugging/article.html

Y así el código queda marcado con un círculo en esa línea como muestra la siguiente
figura. Este círculo indica que hay un breakpoint y que cuando la aplicación se esté
ejecutando en modo depuración, al llegar a esa línea se parará para que podamos
observar si todo (valor de las variables, atributos, etc.) va según lo esperado o ha ocurrido
un error con anterioridad lo que se podrá detectar más fácilmente.

Figura 2. Código. Fuente: http://www.vogella.com/tutorials/EclipseDebugging/article.html

Por otro lado, para marcar un watchpoint se hace del mismo modo, pulsando dos
veces en la línea de la declaración del atributo. Y luego, como se muestra en la siguiente
imagen, en la opción Propiedades del watchpoint se marca si la ejecución tiene que
parar cuando se lee atributo (Field Access) y/o cuando se modifica (Field
Modification).

En este caso cuando se acceda o se modifique ese atributo el depurador parará la


ejecución y podremos observar sus valores comprobando que sucede si hay un error o
no.

TEMA 4 – Ideas clave 5 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Figura 3. Observar valores. Fuente: http://www.vogella.com/tutorials/EclipseDebugging/article.html

También existen varios tipos de breakpoints:

» Breakpoint de método.
» Breakpoint de excepción.
» breakpoint de carga de clases.

El breakpoint de método se define del mismo modo pulsando dos veces en la línea
donde se define la cabecera del método. Pero tiene la posibilidad de que se le configure
para parar justo antes de entrar en el método o justo después de salir del método. Para
ello hay que acceder a las Propiedades del breakpoint (Breakpoint properties) como
vemos en la siguiente imagen.

Figura 4. Propiedades. Fuente: http://www.vogella.com/tutorials/EclipseDebugging/article.html

TEMA 4 – Ideas clave 6 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

En la siguiente captura se ve cómo se selecciona en las propiedades de un breakpoint,


la opción de que se detenga la ejecución antes de entrar en el método (Method Entry).

Figura 5. Method Entry. Propiedades. Fuente:


http://www.vogella.com/tutorials/EclipseDebugging/article.html

Para los breakpoints de carga de clases se tienen que definir desde la vista Outline,
seleccionando la clase que se quiere que haga parar la ejecución cuando se cargue tal y
como muestra la siguiente captura. Habría que pulsar con el botón derecho en la clase y
seleccionar Toogle Class Load Breakpoint.

Figura 6. Toogle Class Load Breakpoint. Propiedades. Fuente:


http://www.vogella.com/tutorials/EclipseDebugging/article.html

TEMA 4 – Ideas clave 7 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Por último, para definir breakpoints que paren la ejecución cuando se lanza una
excepción hay que hacer clic en el icono Add Java Exception Breakpoint en la
barra de herramientas de Breakpoints, como se muestra a continuación. Además, se
puede definir si la ejecución debe parar cuando se capturan o cuando no se capturan las
excepciones.

Figura 7. Add Java Exception Breakpoint. Fuente:


http://www.vogella.com/tutorials/EclipseDebugging/article.html

Por otro lado, en las propiedades de los breakpoints también se pueden especificar
condiciones que restringe la activación o la desactivación de un cierto breakpoint.

Por ejemplo, se podría definir que un breakpoint esté solo activo hasta que ha parado
la ejecución de un programa un número máximo determinado de veces (a lo que se
accede con la propiedad Hit Count). Se puede ver un ejemplo de esta condicional en el
ejemplo de la siguiente imagen.

Figura 8. Condiciones. Fuente: http://www.vogella.com/tutorials/EclipseDebugging/article.html

TEMA 4 – Ideas clave 8 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Tanto los breakpoints como los watchpoints se pueden activar, desactivar y


borrar en la Vista de Breakpoint como se muestra en la siguiente imagen: marcando
o desmarcando cada punto de parada para activarlo o desactivarlo respectivamente, o
pulsando la X para borrar uno o todos los breakpoints.

Figura 9. Borrar Breakpoints. Fuente: http://www.vogella.com/tutorials/EclipseDebugging/article.html

También se pueden desactivar todos los breakpoints a la vez pulsando el botón Skip
all breakpoints que al pulsarlo de nuevo los volvería a activar.

Una vez que teneos todos nuestros breakpoints definidos y activados los que queremos
usar, hay que pasar a depurar el código. Lanzar una aplicación en modo de depuración
en Eclipse, se hace de manera similar a como se lanza en modo de ejecución normal, pero
seleccionando Debug As en lugar de Run As, como se ve en la siguiente imagen.

Figura 10. Debug As. Fuente: http://www.vogella.com/tutorials/EclipseDebugging/article.html

TEMA 4 – Ideas clave 9 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Al empezar la depuración, cuando encuentra el primer punto de parada muestra el


siguiente diálogo donde se pregunta si quiere que se abra la Perspectiva de
depuración, a lo que hay que responder que sí.

Figura 11. Confirm Perpective Switc. Fuente:


http://www.vogella.com/tutorials/EclipseDebugging/article.html

Como se observa en la siguiente imagen en la vista de depurador se ve por qué línea


de qué método va la ejecución.

Figura 12. Línea de método. Fuente: http://www.vogella.com/tutorials/EclipseDebugging/article.html

Por último, comentar que desde la barra de herramientas de Eclipse se puede


controlar la ejecución de un programa en modo depuración. Estos botones y su
comando de teclado equivalente (a veces más prácticos de usar) son los siguientes:

Figura 13. Control de la ejecución. Fuente:


http://www.vogella.com/tutorials/EclipseDebugging/article.html

» F8, reanuda la ejecución.


» Stop, para la ejecución.
» F5, Ejecuta la línea seleccionada.
» F6, ejecuta un método sin que el depurador lo pare.
» F7, finaliza la ejecución del método actual.

TEMA 4 – Ideas clave 10 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Cundo una aplicación se está depurando, con estos comandos y con los breakpoints y
watchpoints ya marcados, se va ejecutando el código poco a poco y se van observando
todos los cambios que las variables van teniendo para ver cuándo va todo según lo
esperado o cuando algo cambia inesperadamente produciendo un error que será
detectado más fácilmente al poder localizar entre qué dos breakpoints se produce.

4.4. Depuración en NetBeans

Del mismo modo, el depurador de Netbeans también permite poner breakpoints


en el código y añadir vigilantes de campos (equivalentes a los watchpoints de
Eclipse). Además, también incluye un Depurador visual (Visual Debugger) para
temas de las interfaces de usuario, como añadir controladores a las acciones en la GUI,
sin tener que hacerlo en el código fuente.

Entonces, como la parte de depuración normal es muy parecida a lo que se ha explicado


en la sección anterior sobre Eclipse, en esta sección nos centraremos en este depurador
visual de NetBeans.

Con este editor visual se puede tomar una instantánea de la GUI y usarla para
localizar el código y añadir controladores a los eventos de la GUI que se quieran
inspeccionar.

La tarea de localizar el código fuente correspondiente a algún elemento de la GUI puede


ser muy compleja en aplicaciones grandes con muchas ventanas en la que todo el código
relativo a la GUI ha sido generado automáticamente mediante el GUI Builder de
NetBeans. Por lo que buscar un fallo en ese tipo de código a mano o incluso saber dónde
se quiere poner un breakpoint puede resultar complicado. Así que, con este depurador,
este código se busca automáticamente a partir de una instantánea de la GUI.

Para usar este depurador visual, cuando se quiere depurar una aplicación con interfaz
gráfica se selecciona Take GUI Snapshot (tomar una instantánea de la GUI) en el
Debug y se abre la instantánea de la GUI como vemos en la siguiente figura.

TEMA 4 – Ideas clave 11 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Figura 14. Tomar instantánea de la GUI. Fuente: https://netbeans.org/kb/docs/java/debug-visual.html

Si se selecciona un elemento de la GUI en la instantánea (por ejemplo, el botón llamado


Guess en la figura anterior), se muestran sus propiedades a la derecha, tal y como se
muestra en la siguiente figura.

Figura 15. Propiedades. Fuente: https://netbeans.org/kb/docs/java/debug-visual.html

Además, en la ventana de Navegador, se selecciona el elemento en cuestión dentro de


la jerarquía en árbol de todos los elementos de la GUI. Esto se muestra en la siguiente
figura, con el guessButton sombreado.

Figura 16. Navegador. Fuente: https://netbeans.org/kb/docs/java/debug-visual.html

TEMA 4 – Ideas clave 12 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Sí se le pulsa con el botón derecho en un elemento de la GUI que aparezca en la


instantánea se abre un menú donde se puede seleccionar Go to Component
Declaration lo que te lleva al código con la declaración de dicho elemento de la interfaz,
como se muestra en la siguiente captura, con la línea sombreada en celeste (en
guessButton).

Figura 17. guessButton. Fuente: https://netbeans.org/kb/docs/java/debug-visual.html

Si en lugar de pulsar en Go to Component Declaration pulsamos en Go to


Component Source lo que se abre es el código del componente como se puede
observar a continuación.

Figura 18. Go to Component Source. Fuente: https://netbeans.org/kb/docs/java/debug-visual.html

De igual modo, pulsando en Go to Hierarchy Addition el cursor se va a la línea de


código donde el componente es añadido, por ejemplo, en este caso donde el botón se
añade al panel. Esta opción, está deshabilitada por defecto y hay que habilitarla con
anterioridad a depurar el código en las opciones del depurador visual.

TEMA 4 – Ideas clave 13 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Figura 19. Go to Hierarchy Addition. Fuente: https://netbeans.org/kb/docs/java/debug-visual.html

Hasta aquí hemos mostrado cómo usar las instantáneas de la GUI para localizar el código
que corresponde a cada componente, pero también se puede usar para explorar los
eventos asociados a los componentes y poder saber cuándo un componente lanza un
evento, para así capturarlo y observar su comportamiento en la depuración.

Para ello en la instantánea al pulsar con el botón derecho en el componente en cuestión


se selecciona la opción de Show Listeners y automáticamente se abre una ventana
nueva con los eventos donde se expande el Custom Listener, o sea las escuchas a
eventos de ese componente que hemos definido previamente en el código. Entonces, por
ejemplo, en la figura siguiente si pulsamos con el botón derecho en
«com.toy.anagrams.ui.Anagrams$2» y vamos a su código Source Code nos lleva a la
línea donde se ha definido el listener para ese evento.

Figura 20. Go to Hierarchy Addition. Fuente: https://netbeans.org/kb/docs/java/debug-visual.html

Así, hemos visto como usando solo el depurador visual se permite depurar el
código de manera sencilla, aunque no se conozca la estructura del mismo con
respecto a las interfaces de usuario ya que el código de le GUI se genera automáticamente
y a veces no es fácil explorarlo para añadir los breakspoints.

TEMA 4 – Ideas clave 14 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Lo + recomendado

No dejes de leer…

Depuración de programas en Eclipse

Documentación completa sobre la depuración local de programas en Eclipse.

Accede al artículo a través del aula virtual o desde la siguiente dirección web:
http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Fconcepts
%2Fclocdbug.htm

Depuración de aplicaciones Java en NetBeans

Documentación con toda la información de depuración de aplicaciones en Java con


NetBeans.

Accede al artículo a través del aula virtual o desde la siguiente dirección web:
https://netbeans.org/project_downloads/usersguide/nbfieldguide/Chapter5-
Debugging.pdf

TEMA 4 – Lo + recomendado 15 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

No dejes de ver…

Screencast del depurador visual de NetBeans

Vídeo screencast sobre cómo usar el depurador visual de NetBeans.

Accede al vídeo a través del aula virtual o desde la siguiente dirección web:
https://netbeans.org/kb/docs/java/debug-visual-screencast.html

Screencast de la depuración visual de NetBeans GUI para detectar


interbloqueo

Vídeo screencast sobre cómo usar el depurador para detectar un interbloqueo (deadlock)
en NetBeans.

Accede al vídeo a través del aula virtual o desde la siguiente dirección web:
https://netbeans.org/kb/docs/java/debug-deadlock-screencast.html

TEMA 4 – Lo + recomendado 16 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

+ Información

A fondo

JDB, el depurador de Java

Documentación sobre el depurador de Java JDB.

Accede al artículo a través del aula virtual o desde la siguiente dirección web:
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html

Depuración de aplicaciones en remoto en Eclipse

Documentación donde se profundiza en la depuración de aplicaciones en remoto en


Eclipse.

Accede al artículo a través del aula virtual o desde la siguiente dirección web:
http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Fconcepts
%2Fcremdbug.htm

TEMA 4 – + Información 17 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

Test

1. La depuración de un programa con GUI:


A. Es la ejecución interactiva de las ventanas.
B. Comprueba la usabilidad de la interfaz gráfica.
C. Comprueba el diseño de los botones.
D. Es la ejecución interactiva del programa.

2. El debuggin de aplicaciones Java:


A. Se hace con el editor visual del Java Debugger.
B. Se hace con el depurador visual JDB.
C. Solo se puede hacer si se utiliza la librería JDB.
D. Se puede hacer a través de la línea de comandos con el Java Debugger.

3. La depuración de aplicaciones sirve para:


A. Detectar errores en la fase de diseño.
B. Detectar los errores en el código.
C. Limpiar la basura generada automáticamente por los constructores de GUI.
D. Realizar todo lo necesario en la fase de pruebas y manutención.

4. Para parar el código en depuración en un punto concreto hace falta:


A. Declarar breakpoints.
B. Añadir una línea de código que fuerce la parada.
C. Declarar una excepción en ese punto.
D. Poner un «Exit» en ese punto.

5. Los breakpoints y los watchpoints:


A. Son lo mismo.
B. Están solo en Eclipse.
C. Son puntos de parada en depuración.
D. Están solo en NetBeans.

TEMA 4 – Test 18 © Universidad Internacional de La Rioja (UNIR)


Plataformas de Desarrollo de Software

6. Una aplicación con GUI en Eclipse:


A. No se puede depurar.
B. Hay que pasarla al depurador visual de NetBeans para depurarla.
C. Se depura de igual modo poniendo breakpoints y watchpoints.
D. Solo puede llevar breakpoints pero no watchpoints porque tiene interfaz gráfica

7. El depurador visual de NetBeans:


A. Permite depurar más fácilmente las aplicaciones con GUI.
B. Depura las interfaces gráficas automáticamente.
C. Necesita la ayuda del usuario de la interfaz para depurar.
D. Añade los watchpoints de la interfaz de manera semiautomatica.

8. La depuración en Eclipse y en NetBeans:


A. No se parecen en nada.
B. En el primero se declaran breakpoints y en el segundo watchpoints.
C. Se realizan de modo similar.
D. NetBeans es siempre visual y Eclipse no.

9. Las instantáneas del depurador visual de NetBeans:


A. Se hacen con drag and drop.
B. Son capturas para medir la usabilidad.
C. Compilan la GUI.
D. Te ayudan a encontrar el código de cada elemento.

10. Los breakpoints para excepciones:


A. Solo se pueden definir en Eclipse.
B. Activan o desactivan los breakpoints.
C. Se pueden definir si el programa debe parar cuando se capturan o cuando no se
capturan.
D. Se ponen en el depurador visual de NetBeans.

TEMA 4 – Test 19 © Universidad Internacional de La Rioja (UNIR)

También podría gustarte