CodeGym /Blog Java /Random-ES /Depuración en IntelliJ IDEA: una guía para principiantes
John Squirrels
Nivel 41
San Francisco

Depuración en IntelliJ IDEA: una guía para principiantes

Publicado en el grupo Random-ES
¡Hola a todos en la comunidad de CodeGym! Hoy hablemos sobre la depuración: qué es y cómo depurar en IntelliJ IDEA. Este artículo está dirigido a personas que ya tienen un conocimiento mínimo de Java Core. No habrá marcos ni procedimientos complicados para publicar bibliotecas. Un paseo pausado. ¡Así que ponte cómodo y comencemos! Depuración en IntelliJ IDEA: una guía para principiantes - 1

Por qué necesita el modo de depuración

Aclaremos inmediatamente algo para nosotros: no hay código sin errores... Así es como funciona la vida. Por lo tanto, no debemos desmoronarnos y rendirnos si nuestro código no funciona como esperábamos. Pero, ¿qué debemos hacer? Bueno, podríamos poner System.out.printlndeclaraciones en todas partes y luego revisar la salida de la consola con la esperanza de encontrar un error. Dicho esto, puede (y la gente lo hace) depurar utilizando un registro cuidadoso. Pero si puede ejecutar su código en una máquina local, es mejor usar el modo de depuración . Quiero señalar de inmediato que en este artículo consideraremos la depuración de un proyecto usando IntelliJ IDEA.

¿Qué es el modo de depuración?

El modo de depuración es para depurar (comprobar) el código en ejecución. Le permite detener la ejecución en lugares designados y observar cómo progresan las cosas. Le permite comprender el estado del programa en un lugar particular del código. Es como poder detener el reloj y mirar todo desde un lado. ¿Guay, verdad? Nuestro objetivo es aprender rápida y fácilmente a depurar aplicaciones utilizando nuestro amado entorno de desarrollo IntelliJ IDEA.

Lo que necesita para comenzar a depurar

Aquí hay algunos consejos gratuitos: mientras lee este artículo, haga todo lo que se describirá aquí; tiene todo lo que necesita hacer para seguirlo. Que necesitas:
  1. IntelliJ IDEA versión 2019.3.1 o superior. En caso de que alguien no tenga esto, aquí hay un enlace donde puede descargarlo . Descargue Community Edition: esa es la versión que usaré.
  2. Clona este proyecto de GitHub e impórtalo a través de IDEA.
Abra IDEA: Depuración en IntelliJ IDEA: una guía para principiantes - 2Seleccione el proyecto de presentación de depuración y presione OK . Luego verá la siguiente ventana: Depuración en IntelliJ IDEA: una guía para principiantes - 3Deje las opciones seleccionadas: Importar proyecto de fuentes externas y Maven . Haga clic en Finalizar . Ahora que hemos importado el proyecto, podemos describir el resto del proceso con un ejemplo vivo.

Solo un poco de teoría... lo prometo :D

Para comenzar a depurar aunque sea un poco, debe comprender qué es un punto de interrupción y estar familiarizado con algunas teclas de acceso rápido. Un punto de interrupción es un marcador especial que indica dónde desea que se detenga la ejecución de la aplicación, posiblemente en función del estado de la aplicación. Puede establecer un punto de interrupción haciendo clic con el botón izquierdo en el panel lateral izquierdo o haciendo clic en la ubicación del código y presionando Ctrl+F8 . Veamos tres tipos de puntos de interrupción: puntos de interrupción de línea, puntos de observación de campo y puntos de interrupción de método. Así es como se ve:
  • En una línea:

    Depuración en IntelliJ IDEA: una guía para principiantes - 4

    Si una declaración tiene una expresión lambda, IDEA le pide que elija si colocar el punto de interrupción en toda la declaración o específicamente en la expresión lambda:

    Depuración en IntelliJ IDEA: una guía para principiantes - 5
  • En un método:

    Depuración en IntelliJ IDEA: una guía para principiantes - 6
  • En una clase:

    Depuración en IntelliJ IDEA: una guía para principiantes - 7
Los puntos de interrupción se pueden eliminar siguiendo los mismos pasos que se usaron para agregarlos. Hay situaciones en las que querrá desactivarlos (silenciarlos). Para hacer esto, busque el Depuración en IntelliJ IDEA: una guía para principiantes - 8ícono en la sección Depurar. Esto silenciará todos los puntos de interrupción. Para ver qué puntos de interrupción se han establecido, puede ir a la sección Depurar en la esquina inferior izquierda y encontrar el Depuración en IntelliJ IDEA: una guía para principiantes - 9ícono, o presionar Ctrl+Shift+F8 : Depuración en IntelliJ IDEA: una guía para principiantes - 10Pasando a la lista de puntos de interrupción, veremos lo siguiente: Depuración en IntelliJ IDEA: una guía para principiantes - 11Hay dos puntos de interrupción aquí:
  • Bee.java:24 — en la clase Bee en la línea 24
  • Main.java:14 — en la clase Principal en la línea 14
Tenga en cuenta que estos puntos de interrupción no se establecerán automáticamente si ha clonado el proyecto: ¡tendrá que establecerlos usted mismo! También hay una sección Puntos de interrupción de excepción de Java . Es muy útil. Aquí puede agregar un punto de interrupción implícito para que el programa se detenga antes de lanzar cualquier excepción o una excepción específica. Agregaremos un punto de interrupción implícito para RuntimeException. Esto es fácil de hacer. Encuentra el icono "+" en la esquina superior izquierda. Haga clic en él y seleccione Puntos de interrupción de excepción de Java : Depuración en IntelliJ IDEA: una guía para principiantes - 12en la ventana que aparece, escriba el nombre de la excepción que desea agregar, selecciónela de la lista y haga clic en Aceptar : Depuración en IntelliJ IDEA: una guía para principiantes - 13Eso concluye nuestro manual sobre cómo configurar las cosas, así que ahora vamos a Seguiré con algo de práctica.

¡Vamos a hacer esta cosa llamada depuración!

Provengo de una larga línea de apicultores familiares, por lo que el proyecto que creé para ilustrar la depuración describe modelos del proceso de recolección de néctar de las abejas, procesamiento del néctar en miel y luego obtención de miel de la colmena. Según el archivo LÉAME de la documentación , que se encuentra en el directorio raíz del proyecto, el comportamiento esperado de todas las flores de las que se recolecta néctar es que la cantidad de miel recolectada (que toma la forma de un doble ) sea igual a la mitad de el néctar recogido. El proyecto tiene las siguientes clases:
  • Abeja - una abeja obrera ordinaria
  • BeeQueen - la abeja reina
  • BeeHive - la colmena
  • HoneyPlant: una planta de miel (fuente de néctar) de la que se recolecta el néctar
  • Main — aquí es donde encontramos public static void main(), el método donde comienza la ejecución.
Si ejecutamos el main()método, encontramos que nuestro programa no solo no calcula la cantidad de miel, sino que también arroja una excepción... Depuración en IntelliJ IDEA: una guía para principiantes - 14Necesitamos investigar y determinar cuál es el problema. Desde la pila de seguimiento en la esquina inferior derecha, podemos ver que en RuntimeException se lanzó HoneyPlant.java:20: Depuración en IntelliJ IDEA: una guía para principiantes - 15Eso es justo de lo que estábamos hablando anteriormente. Observemos esta RuntimeException ejecutando el main()método en modo de depuración. Para hacer esto, haga clic en la flecha del triángulo verde en IntelliJ IDEA al lado del main()método. Depuración en IntelliJ IDEA: una guía para principiantes - 16Como resultado, detendremos el programa en el momento justo antes de que se lance la excepción y veremos este ícono: Depuración en IntelliJ IDEA: una guía para principiantes - 17Depuración en IntelliJ IDEA: una guía para principiantes - 18Para obtener toda la información disponible, debemos buscar en la sección Depurar. tiene una variablepanel que muestra todas las variables disponibles en esta parte de la aplicación:
  • néctar = 1,0;
  • capacidad de néctar = -1.0.
Lanzar la excepción tiene sentido, porque una planta de miel no puede tener una cantidad negativa de néctar. Pero ¿por qué sucede esto? Después de todo, en las líneas 15-17, verificamos si el suministro de néctar está agotado y devolvemos cero si es así:

	if (nectar == 0) {
   	     return 0;
}
Pero el problema es que estamos comprobando la variable incorrecta. Esto es un error en el código. En lugar de comprobar la cantidad de néctar disponible en la flor (que se almacena en la variable nectarCapacity ), el programa comprueba el valor del parámetro néctar del método , que es la cantidad de néctar que queremos sacar de la flor. ¡Aquí lo tienes! ¡Nuestro primer error! Después de arreglar esto, obtenemos el siguiente código:

	if (nectarCapacity == 0) {
   	     return 0;
}
Ahora ejecute el main()método de la manera normal (Run 'Main.main()'). No se lanza ninguna excepción y el programa funciona: Depuración en IntelliJ IDEA: una guía para principiantes - 19la aplicación se ejecuta hasta el final y da la siguiente respuesta:

"33.0 honey was produced by 7 bees from 2 honey plants"
Todo estaría bien ahora, pero esta respuesta es incorrecta... Según el archivo LÉAME de la documentación , el néctar se convierte en miel en una proporción de 2 a 1:

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
El método principal claramente tiene dos plantas de miel con 30 y 40 unidades de néctar, respectivamente. Así que finalmente deberíamos terminar con 35 unidades de miel. Pero el programa nos dice que obtenemos 33. ¿Adónde fueron las otras dos unidades? ¡Vamos a averiguar! Para hacer esto, establezca un punto de interrupción en el Main.main()método en la línea 28, donde beeHive.populateHoney()se llama y ejecute el main()método en modo de depuración: Depuración en IntelliJ IDEA: una guía para principiantes - 20Consideraremos este punto con mayor detalle. El programa dejó de ejecutarse antes de ejecutar la línea 28. En la parte inferior, vemos la sección Depuración, que muestra toda la información disponible sobre la aplicación en ejecución. Como ya se mencionó, el panel Variables contiene todas las variables y objetos disponibles en esta parte de la aplicación. El panel Marcos muestra los pasos por los que está pasando la aplicación; puede ver los pasos anteriores (marcos) y ver todos los datos locales. Para continuar ejecutando el programa, puede presionar F9 o el ícono verde, como se muestra a continuación: Depuración en IntelliJ IDEA: una guía para principiantes - 21Para detener el programa, haga clic en el cuadrado rojo: Depuración en IntelliJ IDEA: una guía para principiantes - 22Para reiniciar la aplicación en modo de depuración, haga clic en la flecha: Depuración en IntelliJ IDEA: una guía para principiantes - 23Además, puede continuar con el aplicación paso a paso usando dos claves:
  • F8: recorrer el código sin entrar en los métodos;
  • F7: paso a paso por el código y paso a paso por los métodos.
En nuestro caso, debemos presionar F7 para ingresar al beeHive.populateHoney()método. Al ingresar, obtenemos: Depuración en IntelliJ IDEA: una guía para principiantes - 24Ahora usaremos F8 para recorrer este método y describir lo que sucede en él:
  • Línea 25: la API Stream se usa para recolectar néctar de todas las abejas
  • Línea 26 — La miel recién creada se agrega a la miel existente;
  • Línea 27 — Se asignan 2 unidades de miel para la reina
  • Línea 28 — Estas dos unidades se eliminan de la cantidad total de miel
  • Línea 29 — La reina come esta miel.
¡Así que ahí es donde fueron las dos unidades perdidas! ¡Viva! Después de hablar con un analista comercial, llegamos a la conclusión de que el archivo LÉAME de la documentación contiene un error y debe actualizarse. Actualicemos el archivo README:

## Documentation
Presentation based on honey production.

**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
hemos terminado Hemos solucionado todos los errores que encontramos. Podemos continuar tranquilamente con una mirada engreída, tomar un poco de café y leer artículos en Stack Overflow CodeGym :)

vamos a resumir

En este artículo, aprendimos:
  • el trabajo de todos tiene errores y la depuración es una excelente manera de solucionarlos
  • qué es un punto de interrupción y qué tipos de puntos de interrupción hay
  • cómo establecer un punto de interrupción de excepción
  • cómo recorrer el código en modo de depuración

Artículo para leer

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION