Depuración de Programas en Java Con El IDE NetBeans

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

ITSON Manuel Domitsu Kono

Depuracin de Programas en Java


con el IDE NetBeans

La mayora de las herramientas de desarrollo de software modernas, el IDE NetBeans
para Java incluido, tienen integrado un depurador. Un depurador es un mdulo de
software que permite ejecutar un programa instruccin por instruccin, ejecutarlo hasta
cierta instruccin o en su totalidad. Tambin nos permite observar cmo cambia el valor
de las variables del programa conforme se van ejecutando sus instrucciones.

Ejecucin de un Programa Instruccin por Instruccin

Para ejecutar un programa instruccin por instruccin se sigue el siguiente
procedimiento:

1. Utilizando la herramienta de desarrollo NetBeans, cre un proyecto llamado
telegrama.

2. Haga que este proyecto sea el proyecto principal y establezca el nombre de la
clase principal a DemoTelegrama dentro del paquete pruebas.

3. Cree una clase llamada Telegrama dentro del paquete objetosNegocio y edite
el cdigo de la clase Telegrama como se muestra en el siguiente listado:

Telegrama.java
/ *
* Tel egr ama. j ava
*/
package obj et osNegoci o;

/ **
* Est a cl ase per mi t e cal cul ar el cost o de un t el egr ama.
*
* @aut hor mdomi t su
*/
publ i c cl ass Tel egr ama {

pr i vat e f i nal doubl e COSTO_ORDI NARI O = 25. 0;
pr i vat e f i nal doubl e COSTO_URGENTE = 40. 0;
pr i vat e f i nal doubl e COSTO_ADI CI ONAL_ORDI NARI O = 2. 5;
pr i vat e f i nal doubl e COSTO_ADI CI ONAL_URGENTE = 4. 0;
pr i vat e St r i ng t i poTel egr ama;
pr i vat e i nt numPal abr as;
pr i vat e doubl e cost o;

/ **
2 Depuracin de Programas en Java con el IDE NetBeans
ITSON Manuel Domitsu Kono
* Const r uct or de l a cl ase. I ni ci al i za l os at r i but os de l a cl ase al
* val or de sus par amet r os
* @par amt i poTel egr ama Ti po de t el egr ama: " Or di nar i o" o " Ur gent e"
* @par amnumPal abr as Numer o de pal abr as del t el egr ama
*/
publ i c Tel egr ama( St r i ng t i poTel egr ama, i nt numPal abr as) {
t hi s. t i poTel egr ama = t i poTel egr ama;
t hi s. numPal abr as = numPal abr as;
}

/ **
* Est a f unci on r egr esa el numer o de pal abr as del t el egr ama.
* @r et ur n Numer o de pal abr as del t el egr ama
*/
publ i c i nt get NumPal abr as( ) {
r et ur n numPal abr as;
}

/ **
* Est a f unci on est abl ece el numer o de pal abr as del t el egr ama.
* @par amnumPal abr as Numer o de pal abr as del t el egr ama
*/
publ i c voi d set NumPal abr as( i nt numPal abr as) {
t hi s. numPal abr as = numPal abr as;
}

/ **
* Est a f unci on r egr esa el t i po del t el egr ama
* @r et ur n Ti po de t el egr ama: " Or di nar i o" o " Ur gent e"
*/
publ i c St r i ng get Ti poTel egr ama( ) {
r et ur n t i poTel egr ama;
}

/ **
* Est a f unci on est abl ece el t i po del t el egr ama
* @par amt i poTel egr ama Ti po de t el egr ama: " Or di nar i o" o " Ur gent e"
*/
publ i c voi d set Ti poTel egr ama( St r i ng t i poTel egr ama) {
t hi s. t i poTel egr ama = t i poTel egr ama;
}

/ **
* Est a f unci on r egr esa el cost o del t el egr ama
* @r et ur n Cost o del t el egr ama
*/
publ i c doubl e get Cost o( ) {
r et ur n cost o;
}

/ **
* Est a f unci on cal cul a el cost o de un t el egr ama en f unci on de su
* t i po y numer o de pal abr as
*/
publ i c voi d cal cul aCost o( ) {
/ / Si el t el egr ama es or di nar i o
i f ( t i poTel egr ama. char At ( 0) == ' O' | |
Depuracin de Programas en Java con el IDE NetBeans 3
ITSON Manuel Domitsu Kono
t i poTel egr ama. char At ( 0) == ' o' ) {
/ / Si el t el egr ama t i ene hast a 10 pal abr as
i f ( numPal abr as <= 10) {
cost o = COSTO_ORDI NARI O;
}
/ / Si el numer o depal abr as excede a 10 pal abr as
el se {
cost o = COSTO_ORDI NARI O +
COSTO_ADI CI ONAL_ORDI NARI O * ( numPal abr as - 10) ;
}
}
/ / Si el t el egr ama es ur gent e
el se i f ( t i poTel egr ama. char At ( 0) == ' U' | |
t i poTel egr ama. char At ( 0) == ' u' ) {
/ / Si el t el egr ama t i ene hast a 10 pal abr as
i f ( numPal abr as <= 10) {
cost o = COSTO_URGENTE;
}
/ / Si el numer o depal abr as excede a 10 pal abr as
el se {
cost o = COSTO_URGENTE +
COSTO_ADI CI ONAL_URGENTE * ( numPal abr as - 10) ;
}
}
/ / Si el t el egr ama no es or di nar i o ni ur gent e
el se {
cost o = 0;
}
}

/ **
* Est a f unci n r egr esa una cadena con el t i po de t el egr ama, su
* numer o de pal abr as y su cost o.
* @r et ur n Cadena con el t i po de t el egr ama, su numer o de pal abr as y
* su cost o.
*/
publ i c St r i ng t oSt r i ng( ) {
r et ur n t i poTel egr ama + " , " + numPal abr as + " , " + cost o;
}
}


4. Edite la clase principal DemoTelegrama como se muestra en el siguiente
listado:

DemoTelegrama.java
/ *
* DemoTel egr ama. j ava
*/
package pr uebas;

i mpor t obj et osNegoci o. Tel egr ama;

/ **
* Est a cl ase per mi t e pr obar l a cl ase Tel egr ama
4 Depuracin de Programas en Java con el IDE NetBeans
ITSON Manuel Domitsu Kono
*
* @aut hor mdomi t su
*/
publ i c cl ass DemoTel egr ama {

/ **
* Est a f unci on pr ueba l os met odos de l a cl ase Tel egr ama
* @par amar gs Ar gument os en l a l i nea de comando
*/
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Tel egr ama t el egr ama1 = new Tel egr ama( " Or di nar i o" , 8) ;
t el egr ama1. cal cul aCost o( ) ;
Syst em. out . pr i nt l n( t el egr ama1) ;

t el egr ama1. set NumPal abr as( 12) ;
t el egr ama1. cal cul aCost o( ) ;
Syst em. out . pr i nt l n( t el egr ama1) ;

Tel egr ama t el egr ama2 = new Tel egr ama( " Ur gent e" , 8) ;
t el egr ama2. cal cul aCost o( ) ;
Syst em. out . pr i nt l n( t el egr ama2) ;


t el egr ama2. set NumPal abr as( 12) ;
t el egr ama2. cal cul aCost o( ) ;
Syst em. out . pr i nt l n( t el egr ama2) ;
}
}

5. Para iniciar la ejecucin del programa instruccin por instruccin seleccione del
men principal la opcin Debug/Step Into o presione la tecla F7 como se ve en
la Figura 1.

6. NetBeans iniciar la ejecucin del programa y detendr la ejecucin en la lnea
con la primera instruccin del programa, resaltando esa lnea de color verde
como se muestra en la Figura 2. La instruccin resaltada es la siguiente
instruccin a ejecutarse.

7. Para ejecutar la instruccin del programa resaltada seleccione del men principal
la opcin Debug/Step Over o presione la tecla F8 como se ve en la Figura 3.
Otra forma de realizar esta tarea es hacer clic en el icono Step Over de la barra
de tareas, Figura 4.


Depuracin de Programas en Java con el IDE NetBeans 5
ITSON Manuel Domitsu Kono

Figura 1


Figura 2
6 Depuracin de Programas en Java con el IDE NetBeans
ITSON Manuel Domitsu Kono

Figura 3


Figura 4

8. Note que aunque la instruccin aparte de crear el objeto invoca al constructor de
la clase, NetBeans ejecuta la instruccin como si fuera una instruccin simple y
detiene la ejecucin del programa en la lnea con la siguiente instruccin del
programa, resaltando esa lnea de color verde, Figura 5.

9. Como la instruccin ejecutada:

Tel egr ama t el egr ama1 = new Tel egr ama( " Or di nar i o" , 8) ;

crea el objeto t el egr ama1, NetBeans abre un panel llamado Variables debajo
del panel de edicin y ah nos muestra las variables creadas, hasta este
momento, en el mtodo en que se encuentra el programa as como los
parmetros del mtodo (el mtodo mai n( ) , en este caso), Figura 6.
Depuracin de Programas en Java con el IDE NetBeans 7
ITSON Manuel Domitsu Kono

Figura 5


Figura 6

10. Si no aparece el panel Variables seleccione del men principal la opcin
Window/Debugging/Variables o presione las teclas Alt +Maysculas +1,
como se ve en la Figura 7. Aparecer el panel Variables.

11. Como la variable telegrama1 es un objeto, podemos inspeccionar los valores de
sus atributos haciendo clic en el icono +a la izquierda del nombre de la variable.
Al hacerlo el nodo de la variable se expandir mostrando sus atributos y sus
valores, Figura 8.

12. Presiona la tecla F8 de nuevo para ejecutar la siguiente instruccin:

t el egr ama1. cal cul aCost o( ) ;

Note que de nuevo, Netbeans ejecuta la invocacin del mtodo
cal cul acost o( ) como una sola instruccin. Inspeccione en el panel Variables
el valor del atributo costo del objeto t el egr ama1.

8 Depuracin de Programas en Java con el IDE NetBeans
ITSON Manuel Domitsu Kono

Figura 7


Figura 8
Ejecucin de un Programa Hasta una Instruccin
Dada

Hay ocasiones en las que nos interesa ejecutar las instrucciones de un programa hasta
una instruccin dada sin detenernos en las instrucciones intermedias. Una forma de
hacerlo es la siguiente:

1. Coloque el cursor al principio de la lnea con la instruccin en la que se desee
detener la ejecucin. En este caso coloque el cursor en la lnea con la
instruccin:
Depuracin de Programas en Java con el IDE NetBeans 9
ITSON Manuel Domitsu Kono
Tel egr ama t el egr ama2 = new Tel egr ama( " Ur gent e" , 8) ;

2. Para ejecutar las instrucciones del programa hasta antes de la instruccin en la
que est el cursor, seleccione del men principal la opcin Debug/Run to
Cursor o presione la tecla F4 como se ve en la Figura 9. Otra forma de realizar
esta tarea es hacer clic en el icono Step Over de la barra de tareas, Figura 10.


Figura 9


Figura 10

3. El programa se detendr en la lnea seleccionada resaltndola. Inspeccione los
nuevos valores de los atributos de t el egr ama1. Tambin inspeccione la salida
producida por el programa en el panel de depuracin que aparece debajo de el
panel de edicin, traslapando al panel Variables, Figura 11.

A continuacin podemos ejecutar el programa instruccin por instruccin presionando
la tecla F8, ejecutar el programa hasta otra instruccin colocando el cursor al inicio de
la lnea que tiene la instruccin y presionando la tecla F4, ejecutar el programa hasta el
final o terminar la sesin de depurado como se vern ms adelante.

10 Depuracin de Programas en Java con el IDE NetBeans
ITSON Manuel Domitsu Kono

Figura 11
Depurado de un Mtodo

Si al ejecutar un programa que tiene uno o ms mtodos queremos depurar el cdigo
de un mtodo y no slo ejecutar el cdigo del mtodo como si fuese una sola
instruccin se sigue el siguiente procedimiento:

1. El programa se encuentra detenido en la lnea con la instruccin:

Tel egr ama t el egr ama2 = new Tel egr ama( " Ur gent e" , 8) ;

Para entrar al cdigo del mtodo (el constructor) para ejecutar su cdigo en el
depurador seleccione del men principal la opcin Debug/Step Into o presione
la tecla F7 como se ve en la Figura 12. Otra forma de realizar esta tarea es
hacer clic en el icono Step Into de la barra de tareas, Figura 13.


Figura 12

Depuracin de Programas en Java con el IDE NetBeans 11
ITSON Manuel Domitsu Kono

Figura 13

2. Al hacerlo, el depurador se detendr en la lnea en la que se encuentra el
encabezado del mtodo, como se muestra en la figura 14. Note que en este
caso, como el mtodo se encuentra en la clase Telegrama, en el panel de
edicin, el panel de esa clase es el activo. Si el archivo de la clase hubiera
estado cerrado, NetBeans lo habra abierto:


Figura 14

3. Como NetBeans entr en el cdigo de una clase, en el panel Variables aparece
el nodo t hi s que si lo expandimos veremos que aparecen nodos para cada uno
de los atributos de la clase, Figura 15. Tambin como esta en el encabezado del
mtodo, en el panel variables estn los nodos que representan los parmetros
de la funcin

4. Para empezar a ejecutar el cdigo del constructor presione la tecla F8. Como en
este caso en la clase hay unos atributos que se inicializan al declararse y como
esta inicializacin ocurre al construir un objeto de la clase, el depurador se
detendr en la lnea de la primera declaracin, Figura 16.

5. Presione la tecla F8 cuatro veces para ejecutar cada una de las inicializaciones.
El depurador se detendr en la primera instruccin del mtodo, Figura 17

12 Depuracin de Programas en Java con el IDE NetBeans
ITSON Manuel Domitsu Kono

Figura 15


Figura 16


Figura 17
Depuracin de Programas en Java con el IDE NetBeans 13
ITSON Manuel Domitsu Kono
6. Dentro del cuerpo del mtodo puede ejecutar las instrucciones una por una
presionando la tecla F8 o ejecutar hasta una instruccin colocando el cursor en
la instruccin deseada y presionando la tecla F4.

7. Presione la tecla F8 dos veces observando lo que sucede en cada caso. Note
que NetBeans se detiene en la lnea que contiene la llave que cierra el cuerpo
del mtodo, Figura 18.


Figura 18

8. Presione de nuevo la tecla F8 para terminar la ejecucin del mtodo. El
depurador termina la ejecucin del mtodo y el programa regresa a la lnea de
cdigo en la que ocurri la llamada al mtodo, Figura 19.


Figura 19

14 Depuracin de Programas en Java con el IDE NetBeans
ITSON Manuel Domitsu Kono
Terminar el Depurado de un Mtodo

Si estando depurando un mtodo ya no nos interesa continuar su ejecucin instruccin
por instruccin podemos ejecutar el cdigo hasta el final y regresar a donde fue
llamado, siguiendo el siguiente procedimiento:

1. Seleccione del men principal la opcin Debug/Step Out o presione la tecla Ctrl
+F7 como se ve en la Figura 20. Otra forma de realizar esta tarea es hacer clic
en el icono Step Into de la barra de tareas, Figura 21.


Figura 20


Figura 21

2. El depurador termina la ejecucin del mtodo y el programa regresa a la lnea de
cdigo en la que ocurri la llamada al mtodo, Figura 19:

3. Podemos seguir ejecutando el programa instruccin por instruccin presionando
la tecla F8, ejecutar el programa hasta otra instruccin colocando el cursor al
Depuracin de Programas en Java con el IDE NetBeans 15
ITSON Manuel Domitsu Kono
inicio de la lnea que tiene la instruccin y presionando la tecla F4, ejecutar el
programa hasta el final o terminar la sesin de depurado como se vern a
continuacin.
Ejecucin de un Programa Hasta el Final

Hay ocasiones en las que nos interesa ejecutar las instrucciones de un programa hasta
el final sin detenernos en las instrucciones intermedias. Una forma de hacerlo es la
siguiente:

1. Seleccione del men principal la opcin Debug/Continue o presione la tecla F5
como se ve en la Figura 22. Otra forma de realizar esta tarea es hacer clic en el
icono Continue de la barra de tareas, Figura 23.


Figura 22


Figura 23

2. Al hacerlo, el programa ejecutar hasta el final, terminando la sesin de
depuracin.
16 Depuracin de Programas en Java con el IDE NetBeans
ITSON Manuel Domitsu Kono
Terminacin de la Sesin de Depurado de un
Programa

Si ya no nos interesa ejecutar las instrucciones de un programa hasta el final, podemos
terminar la sesin de depurado del programa. Una forma de hacerlo es la siguiente:

1. Seleccione del men principal la opcin Debug/Finish Debugger Session o
presione las teclas Maysculas + F5 como se ve en la Figura 24. Otra forma de
realizar la misma tarea es hacer clic sobre el icono Finish Debugger Session
de la barra de tareas, como se muestra en la Figura 25.


Figura 24


Figura 25

2. Al hacerlo, el programa terminar la sesin de depurado.

También podría gustarte