Como desarrollador, es necesario dominar las habilidades de depuración en el entorno de desarrollo. Al escribir programas Java, a menudo nos encontramos con varios problemas inexplicables. Para detectar dónde el programa es problemático, a menudo necesitamos agregar registros para ver el valor de las variables, por lo que la depuración es muy problemática. Supongamos que paso 1 hora al día depurando mi solicitud, será mucho tiempo si se acumula. Por esta razón, use este tiempo para valorar y comprender todas las características que nos hacen depurar más convenientemente. Eso puede ahorrarle algo de tiempo y también hará que su vida sea más cómoda y relajada.
1. Vista de depuración
Las ventanas más utilizadas en la depuración son:
| ventana | ilustrar |
|---|---|
| Ventana de depuración | Muestra principalmente la pila de llamadas del método de subproceso actual, así como el número de líneas de código (código con información de depuración) |
| Ventana de puntos de interrupción | => Ventana de lista de puntos de interrupción, que puede facilitar agregar puntos de interrupción, establecer condiciones de punto de ruptura, eliminar los puntos de interrupción, etc. |
| Ventana de variables | => Mostrar la variable local del método actual, el método no estático, incluida esta aplicación, puede modificar y cambiar el valor de la variable |
| Ventana de edición de código | => No hace falta decir más |
| Ventana de consola de salida | => Registros y otro contenido de salida. Durante la depuración, puede establecer el nivel de atención del componente a un poco más bajo para obtener información de salida múltiple. |
Además, las ventanas auxiliares son:
| ventana | ilustrar |
|---|---|
| Ventana de expresión de expresión | => Escriba la expresión de los datos que necesita observar o modificar el valor del medidor |
| Ventana de visualización | => Puede ejecutar bloques de código, contenido de salida, etc. en la pantalla |
| Ventana de contorno del contorno | => Ver los métodos, variables, etc. de la clase actual |
| Tipo de ventana de jerarquía | => Verifique el nivel de herencia de la clase actual, incluidas las interfaces de implementación y los niveles de herencia de clase |
| Método Ventana de jerarquía de llamadas de relación | => Verifique qué métodos se llaman, qué clases se llaman y qué fila es el método correspondiente se puede abrir directamente |
| Ventana de búsqueda de resultados de búsqueda | => Combinando las teclas de acceso directo, puede ver las ubicaciones de código que se hacen referencia o definidas en el espacio de trabajo, el proyecto y los conjuntos de trabajo. |
1) Vista completa de la ventana:
2) Vista de depuración (vista de pila de subprocesos):
La vista de depuración le permite administrar el programa que se está depurando y ejecutar en el banco de trabajo. Muestra los marcos de pila de los hilos suspendidos en el programa que está depurando, y cada hilo en el programa aparece como un nodo del árbol. Muestra el proceso para cada objetivo que se está ejecutando. Si el hilo está suspendido, su marco de pila se muestra como un elemento infantil. Aquí hay algunos botones de depuración de uso común:
1. Indica que la implementación actual continúa ejecutándose hasta el siguiente punto de interrupción, y la clave de acceso directo es F8.
2. Significa interrumpir todo el proceso
3. Significa ingresar el método actual, y la tecla de acceso directo es F5.
4. Significa ejecutar la siguiente línea de código, y la tecla de acceso directo es F6.
5. Significa salir del método actual y volver a la capa de llamadas. La tecla de acceso directo es F7.
6. Representando la pila del hilo actual, desde el cual puede ver qué código se está ejecutando, y todo el proceso de llamadas, así como el número de línea del código
Introducción detallada:
Omita todos los puntos de interrupción: configure todos los puntos de interrupción para omitirse. Después de configurar todos los puntos de interrupción, habrá una barra de corte en todos los puntos de interrupción, lo que indica que se omitirá el punto de interrupción y el hilo no se suspenderá en el punto de interrupción.
Solicite el marco: este comando permite que el programa regrese al comienzo del método actual e inicie la ejecución nuevamente. Puede volver a ejecutar el marco de la pila Java. Puede seleccionar una trama de pila especificada y luego hacer clic en Drop para marco, para que pueda volver a ingresar el marco de la pila especificado. Presta atención a usar Drop to Frame:
1. No se puede caer en el método en la pila de método ya ejecutado.
2. Al caer en el marco de la pila, el valor original de los datos globales no se cambiará. Por ejemplo, no se borrará un verter que contenga elementos.
Filtros de paso: esta función es relativamente simple. Cuando queremos ignorar algunas clases a las que no prestamos atención al depurar, podemos habilitar filtros de pasos para el filtrado. El programa continuará ejecutándose hasta que se encuentre una posición o punto de ruptura sin filtro. La función de filtros de pasos consta de cuatro elementos: use filtros de paso, editar filtros de paso, tipo de filtro y paquete de filtro. Las operaciones específicas son las siguientes:
Paso 1: Windows -> Preferencias -> Java -> Debug -> Filtrado de paso.
Paso 2: seleccione 'Use filtros de paso'
Paso 3: seleccione la opción deseada en la pantalla. Puede agregar parte del código en su propia base de código.
Paso 4: haga clic en 'Aplicar'
En principio, el comando Editar filtro de paso se usa para configurar las reglas de filtro de paso, mientras que el tipo de filtro y el paquete de filtro se refieren a los tipos de Java filtrados y al paquete Java, respectivamente.
Retorno de paso: rebote del método actual. Durante la ejecución del método llamado, el uso de la retorno de paso saltará del método y volverá al método que llama al método después de ejecutar todo el código del método actual.
Pase: al ejecutar un solo paso, al encontrar una subfunción en la función, no ingresará a la subfunción realizar un solo paso, pero detendrá la ejecución completa de la subfunción, es decir, toda la subfunción se toma como un paso.
Ingrese: Pase en: Ingrese, ingrese y continúe interviniendo al encontrar una subfunción.
Reanudar: restaurar el hilo pausado y saltar directamente desde la posición actual a la siguiente posición de punto de interrupción.
Suspender: pause el hilo seleccionado y puede navegar o modificar el código, verificar los datos, etc.
Eclipse admite la suspensión de hilos y la recuperación a través de suspender y reanudar. En términos generales, Suspend es adecuado para la depuración de programas múltiples. Cuando necesitamos ver el marco de la pila y los valores variables de un cierto hilo, podemos suspender el hilo a través del comando Suspender. El currículum se usa para la recuperación.
Hay dos tipos de currículum que necesitan atención:
El primero es modificar el código del programa durante el proceso de depuración, guardarlo y hacer clic en el currículum, y el programa se suspenderá temporalmente en el punto de interrupción.
El segundo es que cuando el programa lanza una excepción, ejecute el currículum y el programa también se suspenderá temporalmente en el punto de interrupción.
Terminar: Eclipse termina la depuración de programas locales a través del comando terminado.
Desconectar: Eclipse usa el comando de desconexión para terminar las conexiones de socket a JVM remotos.
1. Depuración y ejecución
| marca | Función | llave de atajo | describir |
|---|---|---|---|
| 6.4 | Información de paso | F5 | -> Pase en (si hay una llamada de método, ingresará el método de llamada para la depuración); |
| 6.4 | Atravesar | F6 | -> omitir paso a paso (en cualquier llamada de método que no ingrese a la línea, ejecute directamente la línea de código actual y salte a la siguiente línea); |
| 6.4 | Retorno de paso | F7 | -> return en un solo paso (ejecute el método actual, establezca el método actual desde la pila de llamadas y vuelva a la ubicación de la llamada donde se llama el método actual); |
| 6.5 | Reanudar | F8 | -> reanuda la ejecución normal (hasta que se encuentre el siguiente punto de interrupción); |
| 7.4 | Correr a la línea | Ctrl+R | -> ejecutar a la línea actual (todos los puntos de interrupción en el medio se ignorarán y se ejecutarán a la línea donde se encuentra el cursor actual); |
| 6.3 | Dejar caer al marco | ninguno | -> Volver al inicio del método especificado, esta función es bastante buena. Haga clic con el botón derecho en un método en la pila de llamadas de método y seleccione soltar para ejecutar desde el comienzo del método, por ejemplo, vuelva a ejecutar este método. Puede usar Drop to Frame en este método para volver a ejecutarlo desde la primera línea de este método. Por supuesto, para los métodos con efectos secundarios, como las operaciones de la base de datos, cambiando el contenido de objetos de los parámetros aprobados, etc., puede volver a ejecutar el contenido del contenido que desea. |
| 6.1+6.2 | Copiar pila | ninguno | -> Copiar la información actual de la pila de subprocesos |
Si necesita excluir algunas clases, paquetes, etc. Durante la depuración, puede usar la configuración de filtros de edición de paso.
Propiedades de A6: Información de inicio del proceso de Java, incluidos los parámetros de inicio de la consola, los parámetros del entorno, etc. Si hay algún problema con los parámetros de inicio de los parámetros, primero puede verificar si los parámetros de inicio reales aquí son incorrectos. También puede ver las opciones relevantes para máquinas virtuales para admitir la depuración.
2. Visualización de datos
| marca | Función | llave de atajo | describir |
|---|---|---|---|
| 7.4 | Inspeccionar | Ctrl+Shift+I | -> Ver la variable seleccionada, valor de expresión o resultado de ejecución, presione Ctrl+Shift+I nuevamente para agregar la expresión o valor actual a la ventana de expresiones para ver; |
| 7.4 | Mostrar | Ctrl+Shift+D | -> Mostrar el resultado de la variable, valor de expresión o ejecución seleccionada. Presione Ctrl+Shift+D nuevamente para agregar la expresión o valor actual a la ventana de visualización para mostrar; |
| 7.4 | Ejecutar | Ctrl+u | -> Ejecutar expresión de selección; |
| 7.4 | Correr a la línea | Ctrl+R | -> ejecutar a la línea actual (todos los puntos de interrupción en el medio se ignorarán y se ejecutarán a la línea donde se encuentra el cursor actual); |
| 7.3 | Todas las instancias | Ctrl+Shift+N | -> Ver todos los objetos de la clase seleccionada, esta función es excelente; |
| 7.3 | Recuento de instancias | ninguno | -> Ver el número de todos los objetos en la clase seleccionada; |
| 7.4 | Mirar | ninguno | -> Agregar la variable actual y expresión a la ventana de expresiones; |
3) Vista de variables (vista variable)
1. Para la vista de nombre de la variable, muestre todas las variables de instancias y variables locales a las que se puede acceder en la línea de código actual.
2. Muestre todos los valores variables
3. El valor variable se puede cambiar a través de esta ventana
Vista de variables Muestra información variable relacionada con el marco de pila seleccionado en la vista de depuración. Al depurar programas Java, las variables pueden optar por mostrar información más detallada en el panel de detalles. Además, los objetos Java también pueden mostrar los valores de las propiedades que contienen. Seleccione la variable en esta ventana y haga clic con el botón derecho para realizar muchas operaciones, las operaciones principales son las siguientes:
Todas las instancias: abra un cuadro de diálogo para mostrar todas las instancias de la clase Java. El uso de esta función requiere la máquina virtual Java para admitir la recuperación de instancias.
Todas las referencias :: Abra un cuadro de diálogo para mostrar todos los objetos Java que hacen referencia a la variable.
Cambiar valor :: Cambiar el valor de la variable. Esta función se puede usar junto con Drop tO Frame para la depuración del programa. Use estas dos funciones en lugar de volver a debatir
Copiar variables: copiar el valor de una variable, especialmente cuando el valor de la variable es muy largo (como los datos JSON), esta función es útil.
Encuentra: a veces, cuando hay muchas variables en una clase, puedes buscar.
4) Vista de puntos de interrupción (vista de punto de interrupción)
1. Muestra todos los puntos de interrupción
2. Invalide el puerto seleccionado en la ventana actual 1 y haga clic en Habilitar nuevamente.
3.Punto de interrupción de Exception
Vista de puntos de interrupción enumerará todos los puntos de interrupción que establece en el intervalo de trabajo actual. Haga doble clic en el punto de interrupción para ingresar a la ubicación del punto de interrupción en el programa. También puede habilitar o deshabilitar los puntos de interrupción, eliminar, agregarlos y agruparlos en función de grupos de trabajo o recuentos de puntos de puntos. Hay dos técnicas que son muy útiles cuando se usan puntos de interrupción:
Recuento de hit: Especifica cuántas veces se ejecuta el segmento de código en un punto de interrupción. El más típico es un bucle. Si se va a ejecutar un bucle 10 veces y el hilo está suspendido, entonces el valor de conteo de acertas es 10 y el bucle actual se colgará cuando se ejecute noveno.
Condicional: como su nombre indica, es un juicio condicional. Por ejemplo, cuando necesitamos el bucle de la variable i == 10, el hilo suspende, entonces la condición se establece en i == 10 y seleccione suspender cuando "verdadero".
Si se seleccionan tanto el recuento y condicional de HIT, no será válido si la configuración de expresión y valor no es razonable. Si selecciona suspender cuándo cambia el valor, el condicional puede colgar cuando cambia el valor variable.
5) Vista de expresiones (vista de expresión)
1. Expresiones
2. Haga clic aquí para agregar una nueva expresión
Para encontrar el valor de una expresión en el editor de la perspectiva de depuración, seleccione toda la línea con el conjunto de puntos de interrupción y seleccione la opción Inspect en el menú contextual. La expresión se evalúa en el contexto del marco de pila actual, y el resultado se muestra en la vista de expresiones de la ventana de visualización. Por ejemplo, si quiero calcular el valor de la variable A+B, entonces puedo agregar una expresión a la vista de expresión: A+B
6) Vista de visualización
Puede usar esta vista para ingresar o calcular algún código nuevo. Este código se ejecuta en el contexto de la ubicación de depuración actual, lo que significa que puede usar todas las variables e incluso asistentes de contenido. Para ejecutar su código, simplemente marque y use el menú de clic derecho o CTRL+U (Ejecutar) o Ctrl+Shift+I (Check)
7) Ventana de visualización de código auxiliar
1. Vista de código:
Vista de código, utilizada para mostrar un código específico. La parte verde se refiere al código que se está ejecutando actualmente
| marca | Función | llave de atajo | describir |
|---|---|---|---|
| 11.1 ~ 11.5 | jerarquía de tipo rápido | Ctrl+t | Verifique el nivel de herencia de la clase e interfaz actual. Al ingresar de forma predeterminada, se muestra la subclase de la herencia/implementación de la clase/método actual, y se muestra la subterfaz 11.1; CTRL+T Nuevamente, se mostrará la herencia/implementación de SuperClass/Interface 11.2 de la clase e interfaz actual. Durante la depuración, esta función se usa a menudo para ver la clase de implementación 11.4 en la llamada de método de la clase de interfaz o abstracto, y navegar directamente al método de implementación correspondiente 11.5. |
| contorno rápido | CTRL+O | Consulte el esquema de la clase actual, incluidos métodos, atributos, etc.; Es de poco uso; | |
| declaraciones abiertas | F3 | Ver las definiciones de variables, propiedades y métodos |
2. Llame a la ventana de jerarquía:
| marca | Función | llave de atajo | describir |
|---|---|---|---|
| 12.1 ~ 12.2 | jerarquía de llamadas abiertas | Ctrl+Alt+H | Verifique el método llamado nivel, puede ver dónde se llama el método actual 12.1, o el método actual llama a otras clases de métodos 12.2 |
3. Ventana de jerarquía de tipo:
| marca | Función | llave de atajo | describir |
|---|---|---|---|
| 13.1 ~ 13.4 | jerarquía de tipo abierto | F4 | Verifique el nivel de herencia, puede ver el nivel de herencia de la clase, incluida la clase principal de la clase infantil 13.1, o el nivel de herencia de interfaz 13.2 implementado por la clase. El esquema de la clase 13.3 y 13.4 se mostrará a la derecha de acuerdo con la clase/interfaz seleccionada; 13.3 puede elegir si debe mostrar las propiedades, métodos, etc. de la interfaz de clase principal/principal. |
4. Ventana de búsqueda:
| marca | Función | llave de atajo | describir |
|---|---|---|---|
| 14.1 | Declaraciones | Ctrl+G | La misma firma del método se define en el espacio de trabajo y en el paquete de jar de terceros 14.1 |
| 14.2 | Referencias | CTRL+SHIF+G | Las variables, propiedades y métodos actualmente seleccionados se hacen referencia en el espacio de trabajo y en el paquete de jar de terceros 14.2 |
| 14.3 | Ctrl+Shift+U | Ver dónde aparecen variables, propiedades y métodos en la clase actual14.3 | |
| 14.4 | Implementos | Ver Clase 14.8 que implementa la interfaz actual | |
| 14.4 ~ 14.7 | Método de visualización | Puede elegir diferentes métodos de visualización y ver la imagen para más detalles. |
2. Depurar
1. Establezca el punto de interrupción
En el archivo del código fuente, en la línea marcada frente a la línea de código que desea establecer el punto de interrupción, haga doble clic en el botón del mouse izquierdo para configurar el punto de interrupción y haga doble clic nuevamente en la misma posición para cancelar el punto de interrupción. A veces todavía tenemos esta necesidad, es decir, no quiero ejecutar el código Line by Line. Por ejemplo, un bucle for loop más de 1,000 veces. Solo quiero dejar que el hilo se cuelgue para la depuración en la vez 500. En este momento, podemos usar puntos de interrupción condicionales. Establecer puntos de interrupción de la condición: podemos establecer condiciones de activación para este punto de interrupción. Una vez que se cumple una determinada condición, podemos comenzar a depurar. Puede hacer clic con el botón derecho en el punto de interrupción y seleccionar las propiedades del punto de interrupción para ingresar a la página Configuración del punto de interrupción. Cuando estábamos hablando de la vista del punto de interrupción, aprendimos el uso del recuento de golpes y condicionales. Aquí podemos establecer las condiciones y el número de ejecuciones.
1.1) Tipo de punto de interrupción y ventana de punto de interrupción
Hay cinco tipos de puntos de interrupción que se pueden establecer durante la depuración:
1. Puntos de interrupción de línea: los puntos de interrupción condicionales, como su nombre lo indica, son puntos de interrupción con ciertas condiciones. Solo cuando se cumplan las condiciones establecidas por el usuario, el código se detendrá cuando se ejecute al punto de interrupción.
2. Puntos de interrupción del método: lo especial sobre los puntos de interrupción del método es que se pueden presionar en el código fuente de JDK. Dado que JDK elimina la información de depuración durante la compilación, los puntos de interrupción ordinarios no se pueden golpear dentro, pero los puntos de interrupción de métodos son posibles. Puede ver la pila de llamadas del método a través de este método.
3. Observe los puntos de interrupción (Cambio de acceso a la variable de los puntos de interrupción del reloj)
4. puntos de interrupción de Exception
5. puntos de interrupción de carga de clase
La configuración de cada tipo de punto de interrupción es ligeramente diferente. Puede hacer clic derecho en el punto de interrupción -> Propiedades del punto de interrupción para configurarlo, pero generalmente hay una interfaz de configuración rápida en la ventana del punto de interrupción. Hay más filtro en las propiedades del punto de interrupción, que en realidad es bastante inútil y no es muy útil.
Teclas de acceso directo relacionados con el punto de interrupción:
| llave de atajo | ilustrar |
|---|---|
| Ctrl+Shift+B | Gran punto de interrupción/Cancelar punto de interrupción en el cursor |
| Ctrl+Alt+B | Ignorar todos los puntos de descanso |
| Alt+Shift+Q, B | Activar la ventana del punto de interrupción |
1. Punto de interrupción de línea: puntos de interrupción 1.1 y 1.4 en una determinada línea en el método. Los puntos de interrupción de la línea pueden establecer la condición de suspender el hilo/VM 1.3 y el número de accesos 1.2.
La condición en 1.3 es que cuando Spring registra la definición de Bean (RegisterBeanDefinition), si es org.springframework.demo.mybean, el hilo se suspenderá y puede comenzar la depuración paso a paso.
Para el uso de HIT Count 1.2, generalmente está en el bucle. Si hay un problema con el enésimo procesamiento de objetos, establezca HIT Count = N. Durante la redesportación, puede ser conveniente dejar de depurar cuando el número de bucles que deben depugarse.
2. Método de puntos de interrupción: puntos de interrupción 2.1 y 2.2 en el método. La ventaja de los puntos de interrupción del método es que pueden detenerse y depurar al ingresar o salir del método del método. Son similares a los puntos de interrupción de la fila, y solo los puntos de interrupción de la fila y los puntos de interrupción del método tienen las funciones de configurar condiciones y tiempos de acceso.
Sin embargo, los puntos de interrupción del método tienen otra ventaja. Si el código se compila, el punto de interrupción de línea especificado no funciona, por lo que solo puede alcanzar los puntos de interrupción del método.
Si está interesado, puede eliminar el gancho antes de agregar el número de línea ... a través de A1 y depurarlo y echar un vistazo.
3. Observe los puntos de interrupción: los puntos de interrupción 3.1 y 3.3 golpean las variables de los miembros. Solo las variables de miembro del objeto tienen efecto, las variables de miembros estáticos no funcionan.
Puede establecer el subproceso/VM 3.2 que se suspenderá cuando se accede o se establece la variable, es decir, se monitorearán todos los métodos de acceso o configuración de variables de miembros similares a 3.4.
4. Se puede agregar puntos de interrupción de excepción: se pueden agregar puntos de interrupción de excepción a través de 4.6 o haga clic en la salida de información de la clase de excepción en la información del registro.
Punto de interrupción de excepción 4.1. Cuando se produce una excepción en el sistema, el hilo/VM se suspende en la posición de lanzamiento de la excepción capturada o en la excepción de lanzamiento de la ubicación 4.2 y 4.4 que el programa no atrapa, y también puede especificar si las subclases que incluyen excepciones también se detectan 4.3 y 4.5.
Además de la suspensión anormal establecida anteriormente, puede establecer la ejecución de suspensión de Java-> Debug, principalmente dos:
1. Si suspende la ejecución de las excepciones no capturas. Durante la depuración, siempre hay una suspensión de excepción que afecta la depuración, pero no se establece un punto de interrupción de excepción, puede verificar esta opción;
2. Si está suspendido durante los errores de compilación, esta situación generalmente ocurre al depurar y modificar el código;
Otra cosa a mencionar es que se inicia la aplicación con el método principal. Puede verificar la parada en el A3 principal en la configuración de depuración. Cuando entra el programa, el hilo se suspenderá y esperará la depuración.
5. CLASE CARGACIÓN DE COMPARACIÓN: El punto de interrupción 5.1 se presionó en el nombre de la clase. Los puntos de interrupción de carga de clase no se pueden configurar en la interfaz, pero las clases abstractas están bien. Sin embargo, durante la depuración, los puntos de interrupción no ingresarán obviamente al cargador de clases. Se sabe que la entrada paso a paso ingresa al método de construcción de subclase. Después de suspender el hilo, las clases no abstractas ingresarán al carga de clases (si no hay filtrado del filtro) 5.3. Ya sea que el punto de interrupción de carga de clase se presione en una clase abstracta o no abstractor, el hilo/vm5.2 se suspenderá cuando la clase se cargue por primera vez o la primera subclase se cargue por primera vez.
2. Depurar el programa
1. Programas de idiomas Java Locales de depuración
Entre toda la depuración, la depuración de un programa Java es el más fácil, principalmente incluyendo establecer puntos de interrupción, comenzar la depuración, avanzar y terminar la depuración.
1) Establezca puntos de interrupción:
2) Comience a depurar: Eclipse proporciona cuatro formas de comenzar a depurar del programa (lanzamiento), a saber a través del menú (Run> Debug), Icon ("Green Bed Bug"), Right-> Debug y Key Acthcut Key (F11). En este sentido, es similar a otros comandos (como la ejecución).
Aparece un aviso. Debe cambiar al espacio de trabajo de depuración, verificar "Recuerde mi decisión", recordar seleccionar y no se solicitará ningún mensaje la próxima vez, y luego haga clic en [Sí].
3) Ejecución de un solo paso: utilice principalmente varias vistas mencionadas anteriormente para la depuración, entre los cuales varios botones en la vista de depuración tienen teclas de acceso directo:
Paso Retuen (F7)
Pase (F6)
Pase en (F5)
Despuración final: Terminar la depuración del programa local a través del comando terminado.
2. Caso
Escenario 1: Xiao Ming escribió un albacea de tareas, que se ejecutó continuamente. Después de ejecutarlo en línea por un período de tiempo, descubrió que había una probabilidad de algunas fallas. Después de ejecutarse durante un período de tiempo, el albacea de tareas salió anormalmente. Debido a que era un puntero nulo, Xiao Ming quería depurar localmente y no sabía dónde estaba el punto de interrupción. Este problema es un evento probabilístico y puede no aparecer necesariamente. Entonces, después de que Xiao Ming se depuró varias veces, estaba mareado y ni siquiera podía ver el código claramente. Xiao Ming quería tener un punto de descanso y detenerse y dejarle encontrar el problema cada vez que ocurra una excepción de puntero nulo. Eso sería genial.
Punto de interrupción de excepción
Punto de interrupción de excepciones: en el proceso de localización de un problema, a menudo encuentra puntos de interrupción que no se pueden alcanzar a la posición apropiada, que es muy diferente del punto de activación del problema. Entonces, en este momento, también podría probar un punto de interrupción de excepciones. Como su nombre indica, un punto de interrupción de excepción se refiere a un punto de interrupción que se cuelga automáticamente después de lanzar una cierta excepción.
Haga clic en la parte roja para agregar un punto de quiebre anormal
Ingrese el tipo de excepción que desea localizar, como NullPointerException. De esta manera, después de que se lanza cualquier excepción de NullPointerException en el sistema, el hilo actual se suspenderá, lo que le dará la oportunidad de localizar el problema.
Escena 2: Xiao Ming escribió un enorme bucle. Al sintonizar el código, Xiao Ming descubrió que cada vez que el bucle alcanza la vez 100,000, había un problema y no cumplía con sus expectativas. Entonces, Xiao Ming hizo un punto de interrupción en el bucle, queriendo ver lo que estaba sucediendo, pero Xiao Ming nunca pensó en lo difícil que sería llegar a 100,000 bucles. En este momento, Xiao Ming ya había comenzado a pensar mucho, si pudiera haber tal punto de ruptura:
Si el número de bucles == 100000, el hilo se detiene
Punto de interrupción condicional
Como se muestra en la imagen a la derecha, bucle 1000 veces. Si desea detenerse al bucle a 500 veces, puede crear un punto de interrupción condicional y hacer clic con el botón derecho en el punto de interrupción para colgar las propiedades del punto de interrupción.
Seleccionar condición de habilitación
En el espacio en blanco, agregue su propia condición. Si la condición devuelve verdadera, el hilo se suspenderá. Si es falso, la excepción será ignorada.
Hit Count suspende oficialmente el hilo después de que pasa el punto de interrupción. Si se establece en 500, se expresarán las primeras 499 veces y no se detendrá después del punto de interrupción. Cuando el punto de interrupción es 500 veces, el punto de interrupción suspenderá el hilo actual.
expresión
Las expresiones pueden ver algunas líneas de comando que no están disponibles en el código actual para facilitar el posicionamiento de los problemas.
Escena 3: Xiao Ming ha encontrado un problema recientemente. Siempre hay problemas al llamar a un complemento de terceros. Xiao Ming sospechó que era un error del complemento de terceros, pero Xiao Ming no encontró el código fuente y no pudo depurarlo. ¿Qué debería hacer Xiao Ming?
Depurar dirigido a complementos de terceros
1. Descompilar el código utilizando la herramienta de descompilación
2. Filtre el código fuente descompilado
3. Arreglar los errores de compilación del código fuente
4. Depurar
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.