Además de escribir código la mayor parte del tiempo, los programadores pasan mucho tiempo de depuración. Incluso se dice que está depurando el código o está a punto de depurar el código. :)
Hoy hablaremos sobre algunos consejos para el código de depuración y algunas formas de localizar rápidamente los problemas cuando usen debuggers proporcionados por el IDE.
Amigos que ven esto, no piensen en mí como una fiesta por el título de inmediato. Echemos un vistazo. Si tiene mejores habilidades, deje un mensaje.
Vamos al tema.
1 depuración multipreñada
Los amigos que han desarrollado demasiadas aplicaciones enhebradas deberían tener una comprensión. A veces, para observar los diferentes estados de variables entre múltiples hilos, así como la adquisición de cerraduras, pensarán en agregar un punto de ruptura para depurar el código.
Cuando el punto de interrupción se detiene en el IDE, puede cambiar a otro hilo y ejecutar otros códigos sin afectarse entre sí. Por supuesto, hay un interruptor aquí, que se enciende de forma predeterminada en Eclipse.
Sin embargo, no está habilitado de forma predeterminada en la idea IntelliJ. Es decir, si agrega un punto de interrupción en el código en idea, aunque un hilo se rompe, los otros hilos ya lo han ejecutado.
Después de establecer la suspensión del hilo al mismo que también se puede iniciar la depuración de aplicaciones multiproceso.
La configuración simple puede estar directamente en el punto de interrupción y cambiar suspender al hilo
Cambie la configuración predeterminada en la idea: cambie al botón de radio "subhing", haga clic en el botón "Hacer predeterminado" que aparece
Después de que se rompa un hilo, puede cambiar a través de la ventana de rosca y continuar ejecutando en otros hilos.
Cambie aquí en la idea de IntelliJ
Vemos que tanto el hilo principal como el grupo-1-hilo-1 están en estado de ejecución, y cambiar a cualquiera de los dos puede continuar funcionando.
En este momento, puede escribir una aplicación múltiple y almacenar contenido en contenedores no sabrosos como ArryList, y luego observar por qué son inútiles y qué problemas ocurrirán, que son vívidos y vívidos.
PD: Déjame decirte aquí, es por eso que se recomienda dar un nombre significativo al crear un hilo, al menos un nombre reconocible. De lo contrario, no puede distinguir qué hilo es suyo, y es problemático cambiar.
2 Back-Execution
La ejecución atrasada mencionada aquí es que a veces, cuando depuramos el código, cada método es perezoso y entra en depuración paso a paso. Cuando observa el cambio de un valor variable, un determinado método no hace un seguimiento y el valor cambia, y debe hacerlo nuevamente.
Confiando en la función de la ejecución hacia atrás, puede retroceder, al igual que la función de arrepentirse del ajedrez al jugar al ajedrez. Por supuesto, el nombre de esta operación de retroceso fue nombrado por mí mismo y se llama marco de caída en el IDE.
Con esta función, después de soltar el marco actual, el valor variable cambiado no se restaurará. Por ejemplo, si pasa una lista al método actualmente llamado y agrega contenido a la lista en el método, luego, cuando caiga al lugar donde se llama el método, la lista no volverá a su estado anterior.
Pero cuando se llama nuevamente el método, puede observar cuándo se cambia la lista, al menos no necesita volver a ejecutar el programa. Incluso puede retirarse si no está de acuerdo.
3 puntos de interrupción condicionales
Para depurar el código, debe agregar puntos de interrupción donde desea observar los cambios, y luego ejecutarlos cuidadosamente paso a paso.
Sin embargo, si está en un bucle, o si el método se llama por múltiples hilos al mismo tiempo, reduce cuidadosamente y descubre que no hay contenido que le importe, y se ejecuta desde el comienzo del bucle, pero si todavía no hay contenido que tenga, comenzará a enojarlo.
De hecho, al agregar un punto de interrupción, podemos agregar ciertas condiciones al punto de interrupción, de modo que el punto de interrupción entrará en vigencia solo cuando se cumplan las condiciones especificadas.
En la idea de IntelliJ, haga clic derecho en el punto de interrupción y el cuadro de condición en la figura a continuación aparecerá, solo ingresará las condiciones especificadas.
Con puntos de interrupción condicionales, los códigos no relacionados y no interesados se pueden omitir directamente.
4 código de fragmento
No pensé en qué nombre expresar esto. A veces, durante el proceso de depuración, de repente quiero entretener un código relacionado con esto, pero no en el archivo fuente para observarlo para ayudar en el análisis de problemas. En este punto, detendrá el programa, agregará el código y lo ejecutará nuevamente?
Hay una función en la idea de ejecutar fragmentos de código, que puede ejecutar el código que escribe temporalmente dentro del contexto del código actual.
Por ejemplo, el método actual pasa en una lista, pero este método carece de un elemento que debe usar en las condiciones posteriores. En este momento, puede usar temporalmente la función de la ejecución del código de fragmento y agregar uno.
Tenga en cuenta que en la idea de IntelliJ, el botón de arriba, como una pequeña calculadora, es una función temporal. Después de hacer clic, el cuadro de expresión de evaluación (CTRL+F8) debajo del botón aparecerá. Ingrese el código y haga clic en Evaluar en la esquina inferior derecha. El valor de retorno se mostrará en el resultado.
Esto es equivalente a cambiar temporalmente el contenido de la variable.
Luego, también puede llamar a los métodos del objeto, ejecutar funciones, obtener valores de atributos, etc.
5 Ver valor de modificación de variable
Cada IDE proporciona una ventana para observar el valor de la variable de contexto actual al depurar el código. De hecho, además de ver, algunos tipos básicos no final también se pueden modificar directamente aquí. De esta manera, si se ejecutan múltiples bucles, el valor esperado se puede restaurar cada vez, y no es necesario reiniciar el programa.
Los códigos de uso común completan automáticamente las teclas de acceso directo
| llave de atajo | ilustrar |
|---|---|
| sout | System.out.println (""); |
| PSVM | Método principal |
Configuración común
Teclas de acceso directo de uso común
| llave de atajo | ilustrar |
|---|---|
| Alt + Ctrl + S | Abrir configuración |
| Alt + Ctrl + Shift + S | Structrue de proyecto abierto |
| Alt + Enter | Corrección rápida |
| Alt + / | Finalización automática de palabras |
| Alt + inserto | Código generado automáticamente, como setter, getter, toString, etc. |
| Alt + Shift + V | Mover a los miembros de la clase a otra clase |
| Ctrl + Shift + F | Código de formato |
| Ctrl + Shift + U | Conmutación de estuches |
| Ctrl + Shift + I | Mostrar definiciones de código de acuerdo con el contexto actual, por ejemplo: cuando el cursor se detiene en el método, la definición del método se mostrará en la forma emergente de PopView. |
| CTRL + Haga clic | Saltar al código fuente |
| Shift + Shift | Buscar todos los archivos |
| CTRL + E | Abra la lista de archivos accedidos recientes |
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.