Las habilidades de depuración de IDEA Debug más completas de la historia (¡muy detalladas! ¡Colección recomendada!)

Fuente: https://www.cnblogs.com/chiangchou

La depuración se usa para rastrear el proceso de ejecución del código. Por lo general, se produce una excepción durante la ejecución del programa. Habilitar el modo de depuración puede analizar y ubicar la ubicación de la excepción y el cambio de parámetros durante el proceso de ejecución. Por lo general, también podemos habilitar el modo de depuración para rastrear el proceso de ejecución del código para conocer el código fuente del marco tripartito.

Aprenda a usar Debug en Intellij IDEA, incluido lo siguiente:

  • Apertura de depuración
  • Uso básico y accesos directos
  • vista de variables
  • Evaluar expresión
  • paso inteligente
  • Configuración de condiciones de punto de interrupción
  • Depuración de subprocesos múltiples
  • punto de interrupción alternativo
  • Depuración de interrupciones
  • Adjunto: activación de JRebel

1. El comienzo de la depuración

Primero mire la interfaz en el modo de depuración en IDEA.

Para obtener un código de activación genuino de forma gratuita, lea esto: https://www.javastack.cn/intellij-idea-reactivation-succeed/ .

La siguiente es la interfaz después de iniciar el modo de depuración en IDEA e ingresar al punto de interrupción. Estoy aquí en Windows, que puede ser ligeramente diferente del ícono de Mac. Hablemos brevemente de los 8 lugares marcados en la siguiente figura:

  1. Inicie el servicio en modo de depuración y un botón a la izquierda lo inicia en modo de ejecución. En desarrollo, suelo iniciar directamente el modo Depuración, lo cual es conveniente para depurar el código en cualquier momento.
  2. Punto de interrupción: haga clic en el botón izquierdo en la columna de número de la línea izquierda, o use la tecla de método abreviado Ctrl+F8 para establecer/cancelar el punto de interrupción. El color de la línea del punto de interrupción puede configurarlo usted mismo.
  3. Ventana de depuración: una vez que la solicitud de acceso alcanza el primer punto de interrupción, la ventana de depuración se activa automáticamente. Si no se activa automáticamente, puede ir a la configuración para configurarlo, como se muestra en la Figura 1.2.
  4. Botón de depuración: hay 8 botones en total. Las funciones principales de depuración corresponden a estos botones. Pase el mouse sobre los botones para ver las teclas de acceso directo correspondientes. Las mismas funciones correspondientes se pueden encontrar en la barra de menú Ejecutar, como se muestra en la Figura 1.4.
  5. Botón de servicio: aquí puede cerrar/iniciar servicios, establecer puntos de interrupción, etc.
  6. Pila de llamadas de métodos: Esto muestra todos los métodos a través de los cuales se ha depurado el subproceso. Si marca el botón [Mostrar todos los marcos] en la esquina superior derecha, los métodos de otras bibliotecas de clases no se mostrarán; de lo contrario, habrá muchos métodos.
  7. Variables: en el área de variables, puede ver las variables en el método actual antes del punto de interrupción actual.
  8. Relojes: para ver las variables, puede arrastrar las variables en el área Variables a Relojes para ver

[Figura 1.1]

Marque Mostrar ventana de depuración en el punto de interrupción en la configuración, luego la ventana de depuración se activará automáticamente después de que la solicitud ingrese al punto de interrupción

[Figura 1.2]

Si no se muestra una barra de herramientas o una barra de estado en la parte inferior de su IDEA, puede abrirla en Ver y mostrar la barra de herramientas será conveniente para nosotros. Puedes probar estas cuatro opciones tú mismo.

[Figura 1.3]

En la barra de menú Ejecutar, hay funciones correspondientes para la depuración, y puede ver las teclas de acceso directo correspondientes al mismo tiempo.

[Figura 1.4]

2. Uso básico y teclas de acceso directo

La función de depuración de Debug corresponde principalmente a los dos grupos de botones 4 y 5 de la Figura 1:

1. En primer lugar, hablemos del primer grupo de botones, un total de 8 botones, de izquierda a derecha son los siguientes:

[Figura 2.1]

  • Show Execution Point (Alt + F10): si su cursor está en otra línea o en otra página, haga clic en este botón para saltar a la línea actual de ejecución de código.
  • Step Over (F8): Pase, baje línea por línea, si hay un método en esta línea, no ingresará al método.
  • Step Into (F7): Ingrese, si hay un método en la línea actual, puede ingresar el método, que generalmente se usa para ingresar el método personalizado, y no ingresará el método de la biblioteca de clase oficial, como el método put en la línea 25 .
  • Force Step Into (Alt + Shift + F7): Entrada forzada, puede ingresar cualquier método, puede usar este método para ingresar a la biblioteca de clases oficial al ver el código fuente subyacente.
  • Step Out (Shift + F8): Salir, salir del método step-in al lugar de invocación del método. En este momento, el método se ha ejecutado, pero la asignación aún no se ha completado.
  • Drop Frame (默认无): Puntos de interrupción de reversión, detallados en los siguientes capítulos.
  • Run to Cursor (Alt + F9): ejecute el cursor, puede colocar el cursor en la línea que necesita ver y luego usar esta función, el código se ejecutará en la línea del cursor sin romper el punto.
  • Evaluate Expression (Alt + F8): Calcular la expresión, que se explicará en detalle en los siguientes capítulos.

2. El segundo grupo de botones, un total de 7 botones, son los siguientes de arriba a abajo:

[Figura 2.2]

  • Rerun 'xxxx': Vuelva a ejecutar el programa, cerrará el servicio y reiniciará el programa.
  • Update 'tech' application (Ctrl + F5): Actualice el programa. Generalmente, esta función se puede ejecutar después de que se haya cambiado su código. La operación correspondiente a esta función se encuentra en la configuración del servicio, como se muestra en la Figura 2.3.
  • Resume Program (F9): Reanude el programa, por ejemplo, si tiene dos puntos de interrupción en las líneas 20 y 25, y actualmente ejecuta hasta la línea 20, presione F9 para ejecutar hasta el siguiente punto de interrupción (es decir, la línea 25) y luego presione F9 para ejecutar todo el proceso. , porque no hay puntos de interrupción posteriores.
  • Pause Program: Pausa el programa y habilita la depuración. No se ha encontrado ningún uso específico hasta ahora.
  • Stop 'xxx' (Ctrl + F2): Pulse dos veces para cerrar el programa. A veces encontrará que el puerto está ocupado cuando el servicio se cierra y se reinicia Esto se debe a que el servicio no está completamente cerrado, por lo que debe eliminar todos los procesos de JVM.
  • View Breakpoints (Ctrl + Shift + F8): vea todos los puntos de interrupción, que se tratarán en capítulos posteriores.
  • Mute Breakpoints: Punto de interrupción tonto. Después de seleccionar esto, todos los puntos de interrupción se atenuarán y el punto de interrupción no será válido. Presione F9 para ejecutar el programa directamente. Haga clic nuevamente, el punto de interrupción se vuelve rojo y funciona. Si solo desea invalidar un determinado punto de interrupción, puede hacer clic con el botón derecho en el punto de interrupción para cancelar Habilitado, como se muestra en la Figura 2.4, el punto de interrupción de esta línea no será válido.

Actualizador, en las acciones de 'Actualizar', qué hacer cuando se realiza la operación de actualización, generalmente seleccione 'Actualizar clases y recursos', es decir, actualizar clases y archivos de recursos.

Por lo general, es mejor usarlo con complementos de implementación activa, como JRebel, para que no tenga que reiniciar el servicio cada vez que cambie el código. Cómo activar JRebel, adjunto en el último capítulo.

La siguiente desactivación en marco se activa cuando la ventana de IDEA pierde el foco, es decir, cuando cambia de idea a navegador, la idea hará las cosas automáticamente por usted. Generalmente, puede configurar No hacer nada, y el cambio frecuente consumirá más recursos.

[Figura 2.3]

[Figura 2.4]

En tercer lugar, la vista variable

En el proceso de depuración, es muy necesario realizar un seguimiento y ver los cambios de las variables. Aquí hay algunos lugares donde puede ver las variables en IDEA. Creo que la mayoría de la gente lo sabe.

1. De la siguiente manera, en IDEA, el valor de la variable actual se mostrará después de la línea donde se encuentra el parámetro.

[Figura 3.1]

2. Pase el cursor sobre el parámetro para mostrar la información de la variable actual. Haga clic para abrir los detalles como se muestra en la Figura 3.3. Usualmente uso este método, que es rápido y conveniente.

[Figura 3.2]

[Figura 3.3]

3. Ver en Variables, aquí se muestran todas las variables del método actual.

[Figura 3.4]

4. En Relojes, haga clic en Nuevo reloj e ingrese la variable que desea ver. O puede arrastrarlo desde Variables a Watche para verlo.

[Figura 3.5]

Si descubre que no tiene relojes, probablemente sea donde está la imagen a continuación.

[Figura 3.6]

[Figura 3.7]

En cuarto lugar, la expresión de cálculo

La expresión de cálculo mencionada anteriormente se muestra en la Figura 4.1 como el botón Evaluar expresión (Alt + F8). Puede usar esta operación para evaluar una expresión durante la depuración sin imprimir información.

[Figura 4.1]

1. Presione Alt + F8 o el botón , o puede seleccionar una expresión y luego Alt + F8 para que aparezca la ventana para calcular la expresión , de la siguiente manera, presione Entrar o haga clic en Evaluar para calcular el valor de la expresión.

Esta expresión puede ser no solo una variable o parámetro general, sino también un método.Cuando llama a varios métodos en una línea de código, puede ver el valor de retorno de un método de esta manera.

[Figura 4.2]

2. Establezca la variable.En el cuadro de la expresión de cálculo, puede cambiar el valor de la variable , por lo que a veces es muy conveniente para nosotros depurar la situación de varios valores, ¿no?

[Figura 4.3]

Cinco, paso inteligente

Piénselo, hay varios métodos en una línea de código, cómo elegir solo un método para ingresar. Como se mencionó anteriormente, use Step Into (Alt + F7) o Force Step Into (Alt + Shift + F7) para ingresar el método, pero estas dos operaciones se ingresarán en secuencia de acuerdo con la secuencia de invocación del método, lo cual es más problemático.

Entonces Smart Step Into es muy conveniente, Smart Step In, esta función se puede ver en Ejecutar, Smart Step Into (Shift + F7), como se muestra en la Figura 5.1

[Figura 5.1]

Presione Shift + F7, ubicará automáticamente la línea de punto de interrupción actual y enumerará los métodos que se ingresarán, como se muestra en la Figura 5.2, haga clic en el método para ingresar el método.

Si solo hay un método, introdúzcalo directamente, de forma similar a Force Step Into.

[Figura 5.2]

6. Configuración de la condición de punto de ruptura

Al establecer la condición de punto de interrupción, cuando se cumple la condición, se detiene en el punto de interrupción; de lo contrario, se ejecuta directamente.

Por lo general, cuando recorremos una colección o matriz relativamente grande y establecemos un punto de interrupción en el ciclo, ¿queremos ver los valores de las variables uno por uno? Debe ser muy agotador, tal vez te lo perdiste y vale la pena hacerlo todo de nuevo.

1. Haga clic con el botón derecho en el punto de interrupción para establecer directamente la condición del punto de interrupción actual, como se muestra en la Figura 6.1, el punto de interrupción surte efecto solo cuando configuro exist en verdadero.

[Figura 6.1]

2. Haga clic en Ver puntos de interrupción (Ctrl + Shift + F8) para ver todos los puntos de interrupción.

Java Line Breakpoints muestra todos los puntos de interrupción. Marque Condición a la derecha para establecer la condición del punto de interrupción.

Al marcar el mensaje de registro en la consola, se generará la línea de punto de interrupción actual en la consola, como se muestra en la Figura 6.3

Marque Evaluar y registrar, puede ejecutar esta línea de código para calcular el valor de la expresión y enviar el resultado a la consola.

[Figura 6.2]

[Figura 6.3]

3. Hablemos de los Filtros filtrados a la derecha Estos no son de uso común en general, así que vamos a explicar brevemente el significado.

Filtros de instancias: Filtrado de instancias, ingrese la ID de la instancia (la ID de la instancia en la Figura 6.5), pero no lo logré aquí, no sé la razón, y los amigos que saben dejan un mensaje.

Filtros de clase: filtrado de clase, filtrado por nombre de clase, también falló....

Recuento de pases: se utiliza en el bucle. Si el punto de interrupción está en el bucle, puede establecer este valor. Después de que el bucle se detenga en el punto de interrupción, los bucles posteriores se detendrán en el punto de interrupción.

[Figura 6.4]

[Figura 6.5]

4. Puntos de interrupción de excepción, al establecer puntos de interrupción de excepción , cuando hay una excepción que debe ser interceptada en el programa, la línea de excepción se ubicará automáticamente.

Como se muestra en la figura 6.6, haga clic en el signo + para agregar puntos de interrupción de excepción de Java para agregar un punto de interrupción de excepción. Luego ingrese la clase de excepción que necesita un punto de interrupción, como se muestra en la Figura 6.7, y luego podrá ver el punto de interrupción de excepción agregado en Puntos de interrupción de excepción de Java.

Agregué un punto de interrupción de excepción NullPointerException aquí, como se muestra en la figura 6.8.Después de que ocurre una excepción de puntero nulo, se ubica automáticamente en la línea de excepción de puntero nulo.

[Figura 6.6]

[Figura 6.7]

[Figura 6.8]

Siete, depuración de subprocesos múltiples

En circunstancias normales, cuando depuramos, estamos en un hilo y bajamos paso a paso. ¿Pero a veces encontrará que no puede hacer otra solicitud cuando está depurando?

Esto se debe a que el nivel de bloqueo predeterminado de IDEA es TODO durante la depuración, lo que bloqueará otros subprocesos y solo ejecutará otros subprocesos cuando finalice el subproceso de depuración actual. Puede seleccionar Subproceso en Ver puntos de interrupción, como se muestra en la Figura 7.1, y luego hacer clic en Establecer como predeterminado para configurarlo como la opción predeterminada.

[Figura 7.1]

Para cambiar de subprocesos, en la lista desplegable de Marcos en la Figura 7.2, puede cambiar el subproceso actual De la siguiente manera, tengo dos subprocesos de depuración aquí, y cambiar el otro ingresará a otro subproceso de depuración.

[Figura 7.2]

Ocho, punto de interrupción alternativo

Al depurar, ¿quiere volver a realizar el proceso sin volver a realizar una solicitud?

1. Primero conozca la pila de llamadas de este método , como se muestra en la Figura 8.1, primero solicite ingresar al método insertDemo de DemoController, y luego llame al método insert. Ignoraremos las otras invocaciones. El método superior es el método donde se encuentra el punto de interrupción actual.

[Figura 8.1]

2. Reversión del punto de interrupción

La llamada reversión del punto de interrupción en realidad regresa al comienzo de la llamada al método anterior. En IDEA, la prueba no puede retroceder línea por línea o volver al punto de interrupción anterior, sino volver al método anterior.

Hay dos formas de retroceder, una es el botón Soltar fotograma (Figura 8.2), que retrocede paso a paso según el método llamado, incluidos otros métodos de la biblioteca de clases tripartita (si cancela el botón Mostrar todos los fotogramas, se mostrará el método de la biblioteca de clase tripartita, como se muestra en la figura 8.3).

El segundo método consiste en seleccionar el método que se revertirá en el método de pila de llamadas, hacer clic con el botón derecho para seleccionar Eliminar cuadro (Figura 8.4) y retroceder a la llamada de método anterior del método. En este momento, presione F9 (Reanudar Program) nuevamente, puede ver que el programa ingresa al punto de interrupción del método.

Pero hay una cosa a tener en cuenta, la reversión del punto de interrupción solo puede volver a pasar por el proceso.Si el estado de algunos parámetros/datos anteriores ha cambiado, no se puede revertir al estado anterior, como objetos, colecciones, datos de base de datos actualizados, etc espera.

Figura [8.2]

Figura [8.3]

Figura [8.4]

9. Depuración de interrupciones

¿Desea interrumpir la solicitud durante la depuración y no continuar con el resto del proceso?

A veces, después de que vemos que los parámetros entrantes son incorrectos, no queremos pasar al siguiente proceso. ¿Cómo podemos interrumpir esta solicitud (este último proceso necesita eliminar los datos de la base de datos ....), necesitamos cerrar el servicio y reiniciar el programa? Bueno, yo solía hacer eso también.

Para ser precisos, no he encontrado una forma de interrumpir directamente la solicitud (excepto cerrar el servicio), pero puede evitar el proceso posterior a través de Force Return, es decir, devolución forzada, como se muestra en la Figura 9.1.

Haga clic en Forzar devolución y aparecerá la ventana Valor de devolución. El tipo de devolución de mi método es Mapa, por lo que devuelvo resultados directamente aquí para forzar la devolución, de modo que el proceso posterior no se lleve a cabo. O puede hacer un nuevo HashMap<>().

[Figura 9.1]

[Figura 9.2]

10. Adjunto: Activación JRebel

En la actualidad, he estado usando JRebel como una herramienta de implementación en caliente, y el efecto es bastante satisfactorio.La modificación del código Java o xml y otros archivos de configuración se pueden actualizar en caliente. Ocasionalmente, el servicio se ha estado ejecutando durante mucho tiempo, o cuando hay muchos archivos modificados, la actualización activa no tiene efecto y es necesario reiniciar el servicio.

Aquí hay solo una breve descripción de una forma que vi en Internet para obtener derechos de uso permanentes de forma gratuita (sin craqueo), y no estoy seguro de cuándo no se puede usar este método.

  • Primero necesitas una cuenta de Twitter
  • Ingrese esta URL: https://my.jrebel.com/ e inicie sesión, como se muestra en la Figura 10.1
  • Luego puedes obtener tu código de activación permanente en Install and Acticate.
  • Establezca el código de activación en Jrebel en la configuración, como se muestra en la Figura 10.3 Si el complemento JRebel no está instalado, primero instale la búsqueda e instale el complemento JRebel en Complementos.

[Figura 10.1]

[Figura 10.2]

[Figura 10.3]

Si hay algo mal o una mejor manera, ¡por favor deje un mensaje!

Artículos calientes recientes recomendados:

1. Más de 1000 preguntas y respuestas de entrevistas en Java (última versión de 2022)

2. ¡Loco! Las corrutinas de Java están llegando. . .

3. Tutorial de Spring Boot 2.x, ¡muy completo!

4. No escriba la clase de explosión de pantalla completa, pruebe el modo decorador, ¡esta es la forma elegante! !

5. "Manual de desarrollo de Java (edición Songshan)" es la última versión, ¡descárguela rápidamente!

Si crees que es bueno, ¡no olvides darle me gusta + retuitear!

Supongo que te gusta

Origin blog.csdn.net/youanyyou/article/details/126698557
Recomendado
Clasificación