Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 4
Tema 4
TEMA
Esquema
TEMA 4 – Esquema
Desarrollo de aplicaciones
Depuración de
Eclipse Java Debugger (JDB) NetBeans
2
programas
Ideas clave
Para estudiar este tema lee las Ideas clave que encontrarás a continuación.
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.
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.
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.
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.
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.
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).
» 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Lo + recomendado
No dejes de leer…
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
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
No dejes de ver…
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
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
+ Información
A fondo
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
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
Test