¡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!
Seleccione el proyecto de presentación de depuración y presione OK . Luego verá la siguiente ventana:
Deje 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.
í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
ícono, o presionar Ctrl+Shift+F8 :
Pasando a la lista de puntos de interrupción, veremos lo siguiente:
Hay dos puntos de interrupción aquí:
en la ventana que aparece, escriba el nombre de la excepción que desea agregar, selecciónela de la lista y haga clic en Aceptar :
Eso concluye nuestro manual sobre cómo configurar las cosas, así que ahora vamos a Seguiré con algo de práctica.
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:
Necesitamos 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ó
Eso es justo de lo que estábamos hablando anteriormente. Observemos esta RuntimeException ejecutando el
Como 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 - 17]()
Para 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:
la aplicación se ejecuta hasta el final y da la siguiente respuesta:
documentación , el néctar se convierte en miel en una proporción de 2 a 1:
Consideraremos 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:
Para detener el programa, haga clic en el cuadrado rojo:
Para reiniciar la aplicación en modo de depuración, haga clic en la flecha:
Además, puede continuar con el aplicación paso a paso usando dos claves:
Ahora usaremos F8 para recorrer este método y describir lo que sucede en él:
de la documentación contiene un error y debe actualizarse. Actualicemos el archivo README:
Stack Overflow CodeGym :)

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 ponerSystem.out.println
declaraciones 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:- 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é.
- Clona este proyecto de GitHub e impórtalo a través de IDEA.


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:
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:
-
En un método:
-
En una clase:




- Bee.java:24 — en la clase Bee en la línea 24
- Main.java:14 — en la clase Principal en la línea 14


¡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- 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.
main()
método, encontramos que nuestro programa no solo no calcula la cantidad de miel, sino que también arroja una excepción... 
HoneyPlant.java:20
: 
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. 


- néctar = 1,0;
- capacidad de néctar = -1.0.
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: 
"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
## 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: 



- 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.
beeHive.populateHoney()
método. Al ingresar, obtenemos: 
- 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.
## 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 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
GO TO FULL VERSION