JavaRush /Blog Java /Random-ES /Depuración en Intellij IDEA: una guía para principiantes

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

Publicado en el grupo Random-ES
Hola a todos, comunidad JavaRush. Hoy hablaremos sobre la depuración: qué es y cómo depurar en Intellij IDEA. Depuración en Intellij IDEA: una guía para principiantes - 1El artículo está dirigido a personas que ya tienen conocimientos mínimos de Java Core. No habrá marcos ni procesos complejos para publicar bibliotecas. Paseo fácil. Así que ponte cómodo y ¡comencemos!

¿Por qué necesitas depurar?

Dejémoslo claro de inmediato: no hay código sin errores... Así es como funciona la vida. Por lo tanto, no debemos debilitarnos inmediatamente y renunciar a todo si el código no funciona como esperábamos. Depurar en Intellij IDEA: una guía para principiantes - 2¿Pero qué hacer? Por supuesto, puede configurarlo System.out.printlndonde pueda y luego ordenar la salida en la terminal con la esperanza de poder encontrar un error. Aún así, es posible... y lo hacen, y lo hacen cuidadosamente utilizando el registro (puedes leer sobre esto aquí ). Pero si es posible ejecutar el código en la máquina local, es mejor utilizar Debug . Me gustaría señalar de inmediato que en este artículo consideraremos depurar un proyecto dentro de Intellij IDEA. Si está interesado en leer sobre la depuración remota, aquí tiene un artículo de nuestro recurso .

¿Qué es la depuración?

Depurar en Intellij IDEA: una guía para principiantes - 3La depuración es el proceso de depurar (verificar) código, cuando durante su ejecución puede detenerse en un lugar designado y observar el progreso de la ejecución. Comprender el estado del programa en un lugar determinado. Es exactamente lo mismo que si pudieras detener la vida y mirar todo desde fuera. ¿Guay, verdad? Nuestro objetivo es aprender rápida y fácilmente cómo depurar aplicaciones utilizando nuestro entorno de desarrollo favorito, Intellij IDEA.

Lo que necesitas para comenzar a depurar

Te doy un consejo gratuito: mientras lees el artículo haz todo lo que aquí te describirán, afortunadamente hay de todo para ello. Qué necesitas:
  1. Entorno de desarrollo Intellij IDEA versión 2019.3.1 y superior. Por si alguien no lo tiene, aquí les dejo un enlace donde pueden descargarlo. Descargue la Edición Comunitaria porque eso es lo que usaré.
  2. Clona el proyecto desde GitHub e impórtalo a través de IDEA.
Abra IDEA: Depurar en Intellij IDEA: una guía para principiantes - 4seleccione el proyecto de presentación de depuración , haga clic en Aceptar y obtenga: Depurar en Intellij IDEA: una guía para principiantes - 5Deje el proyecto de importación desde fuentes externas, Maven y haga clic en Finalizar . Habiendo importado el proyecto, podemos describir el proceso usando un ejemplo en vivo.

Un poco de teoría... lo prometo :D

Para comenzar a depurar un poco, debe comprender qué es breakPoint y comprender algunas teclas de acceso rápido que necesita para comenzar. BreakPoint es un marcador especial que muestra la ubicación o estado en el que se debe detener la aplicación. Puede establecer un punto de interrupción haciendo clic izquierdo en la barra lateral izquierda o haciendo clic en la ubicación del código y presionando Ctrl + F8 . Los puntos de interrupción son de tres tipos: marca de línea, marca de variable y marca de método. Se parece a esto:
  • Por línea:

    Depurar en Intellij IDEA: una guía para principiantes - 6

    si hay una lambda en la expresión, entonces IDEA le ofrece una opción: poner la expresión en toda la línea o específicamente en la lambda:

    Depurar en Intellij IDEA: una guía para principiantes - 7
  • Por método:

    Depurar en Intellij IDEA: una guía para principiantes - 8
  • Por clase

    Depurar en Intellij IDEA: una guía para principiantes - 9
Los puntos de interrupción se pueden eliminar siguiendo los mismos pasos que al agregarlos. Hay situaciones en las que es necesario desactivarlos (silenciarlos). Para hacer esto, en la sección Depurar, puede encontrar un ícono Depurar en Intellij IDEA: una guía para principiantes - 10que inactivará todos los puntos de interrupción. Para ver qué puntos de interrupción ya se han configurado, puede ir a Depurar en la esquina inferior izquierda y buscar el ícono Depurar en Intellij IDEA: una guía para principiantes - 11, o presionar Ctrl+Shift+F8 : Depurar en Intellij IDEA: una guía para principiantes - 12cuando vayamos a la lista de puntos de interrupción, veremos: Depuración en Intellij IDEA: una guía para principiantes - 13Hay 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
Me gustaría señalar que cuando clonas un proyecto, no tendrás estos puntos de interrupción: ¡debes configurarlos tú mismo! También hay una sección de puntos de interrupción de excepciones de Java . Algo muy útil. Al usarlo, puede agregar un punto de interrupción implícito para que el programa se detenga antes de lanzar cualquier excepción o una específica. Agreguemos un punto de interrupción implícito para RuntimeException. Esto se hace fácilmente: en la esquina superior izquierda hay un signo más “+”. Haga clic en él y seleccione Puntos de interrupción de excepciones de Java : Depuración en Intellij IDEA: una guía para principiantes - 14en la ventana que aparece, escriba el nombre de la excepción que debe agregarse, seleccione de la lista propuesta y haga clic en Aceptar : Depuración en Intellij IDEA: una guía para principiantes - 15terminamos este programa educativo y pasamos a practicar.

Vamos, entremos en la naturaleza de la depuración.

Depuración en Intellij IDEA: una guía para principiantes - 16Como soy apicultor hereditario, para la presentación de depuración creé un proyecto que describe el proceso de recolección de néctar por parte de las abejas, procesamiento del néctar en miel y obtención de miel de la colmena. Según la documentación del archivo README, que se encuentra en la raíz del proyecto, leemos: comportamiento esperado : de todas las flores de las que se recolecta néctar (como valor doble ), se recolectará una cantidad de miel igual a la mitad de el néctar recogido. El proyecto tiene las siguientes clases:
  • Abeja: una abeja obrera común;
  • BeeQueen - abeja reina;
  • Colmena - colmena;
  • HoneyPlant: planta melífera de la que se extrae la miel;
  • Principal: donde public static void main()se encuentra el método en el que comienza el proyecto.
Si ejecutas el método main(), resulta que no solo no se cuenta la cantidad de miel, sino que también aparece un error... Depuración en Intellij IDEA: una guía para principiantes - 17Tienes que ver qué está mal allí. Desde el seguimiento de la pila en la esquina inferior derecha, podemos ver que en HoneyPlant.java:20, se lanza una RuntimeException: Depurar en Intellij IDEA: una guía para principiantes - 18Este es exactamente nuestro caso: hay una RuntimeException, agreguemos una búsqueda de dicha excepción, como se describió anteriormente, y ejecutemos main()el método en modo de depuración. Para hacer esto, haga clic en la flecha del triángulo verde en Intellij IDEA antes del método main(): Depuración en Intellij IDEA: una guía para principiantes - 19y obtendremos el programa detenido en el momento antes de que se active la excepción con este ícono Depurar en Intellij IDEA: una guía para principiantes - 20Depuración en Intellij IDEA: una guía para principiantes - 21. Para obtener información completa, debe buscar en la sección Depurar. Tiene Variables , que muestra todas las variables disponibles en esta parte de la aplicación:
  • néctar = 1,0;
  • Capacidad de néctar = -1,0.
La excepción es justa, ya que el valor de la cantidad de néctar que hay en la planta melífera no puede ser negativo. ¿Pero por qué sucede esto? Después de todo, hay una verificación de que si se acaba el néctar, se devuelve un valor cero en las líneas 15-17:
if ( nectar == 0 ) {
         return 0;
}
Pero el problema es que está comprobando la variable incorrecta... y esto es un error en el código. En lugar de verificar el valor de néctar en la flor, que está en la variable nectarCapacity , el programa verifica el valor de néctar , que entra en el método y es la cantidad que quieren tomar del néctar. ¡Aquí está el primer error! Por tanto, lo expresamos correctamente y obtenemos la expresión:
if ( nectarCapacity == 0) {
         return 0;
}
Luego ejecutamos main()el método en modo normal (Run `Main.main()`)y no hay más error, el programa funcionó: La aplicación funcionó Depuración en Intellij IDEA: una guía para principiantes - 22y dio la respuesta: “33.0 miel fue producida por 7 abejas de 2 plantas melíferas” Todo estaría bien, pero la respuesta es mal... Todo porque en la documentación Archivo README Está escrito que el néctar se convierte en miel en una proporción de 2 a 1:
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
Del método principal se puede ver que hay dos plantas melíferas, 30 y 40 unidades de néctar respectivamente, por lo que al final deberías obtener 35 unidades de miel. Y escribe que 33. ¿Adónde fueron las otras dos unidades?... ¡Ahora lo descubriremos! Para hacer esto, necesitamos poner un punto de interrupción en el método Main.main()en la línea No. 28, donde se ejecuta beeHive.populateHoney()y ejecutar mainel método en modo de depuración: Depuración en Intellij IDEA: una guía para principiantes - 23Echemos un vistazo más de cerca a este punto. El programa se detuvo antes de ejecutar la línea 28. En la parte inferior vemos la sección Depurar, que describe toda la información sobre la aplicación en ejecución. La parte de Variables, como ya se mencionó, contiene todas las variables y objetos a los que se puede acceder desde esta parte de la aplicación. La parte de Marcos muestra los pasos por los que pasa la aplicación, puedes mirar el paso anterior y obtener todos los datos locales. Para que el programa continúe funcionando, puede presionar F9 o el ícono verde, como se muestra a continuación: Depurar en Intellij IDEA: una guía para principiantes - 24Para detener el programa, debe hacer clic en el cuadrado rojo: Depuración en Intellij IDEA: una guía para principiantes - 25Para reiniciar la aplicación en modo de depuración, debe hacer clic en la flecha: Depuración en Intellij IDEA: una guía para principiantes - 26A continuación, para ir paso a paso por la aplicación, puedes utilizar dos teclas:
  • F8: recorra una sección de código y no entre en métodos internos;
  • F7: recorra una sección de código e ingrese métodos internos.
Por lo tanto, para entrar en funcionamiento el método beeHive.populateHoney(), debemos presionar F7, y continuaremos: Depuración en Intellij IDEA: una guía para principiantes - 27A continuación, pasamos al modo de depuración usando F8 usando este método hasta el final y describimos lo que sucede en este método:
  • Línea 25: Stream API se utiliza para recolectar miel de todas las abejas;
  • Línea 26: se agrega miel a la 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: el útero se come esta miel.
Ahí fueron estas dos unidades, ¡hurra! Después de comunicarnos con un analista de negocios, llegamos a la conclusión de que el archivo README de documentación contiene un error y será necesario actualizarlo. Actualicemos el archivo README:
## Documentation
Presentation based on honey getting process.

**Note**:
*  1 honey point = 2 nectar points
*  2 honey point queen bee eats every time when beehive populates the honey.
Y eso es todo: todos los errores encontrados han sido solucionados, podemos seguir tranquilamente tomando café y leyendo artículos en el hub JavaRush con una mirada inteligente :)

Resumir

En este artículo descubrimos que:
  • no hay trabajo sin errores y la depuración es una excelente manera de solucionarlos;
  • qué es un punto de interrupción y qué tipos existen;
  • cómo configurar un punto de interrupción de excepción;
  • Cómo navegar en modo de depuración.

Artículo para leer

Vea también mis otros artículos:
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION