A partir de ahora, publiqué los primeros 3 videos del curso y mañana publicaré el cuarto. Planeo publicar dos videos por semana en YouTube para maximizar el impacto, pero aquí solo publicaré una lección por semana para evitar la sobresaturación.
Grabé alrededor de 4 horas de contenido de video y todavía no he terminado el segundo módulo de ocho. Este curso será muy detallado e intensivo.
Estoy trabajando en la plataforma del curso en este momento, haciendo un buen progreso, y espero publicarlo lo suficientemente pronto aquí . ¡Es posible que ya esté disponible para cuando leas esto!
Para mí es importante que la experiencia de usuario de la plataforma del curso sea satisfactoria. Así que evité DRM tanto como sea posible. Con suerte, la gente respetará eso y el esfuerzo que estoy poniendo en esto.
Estoy creando la plataforma del curso en Spring Boot 3 con GraalVM, por lo que idealmente será ágil, rápido y bastante simple. Planeo alojar los videos en YouTube como videos no listados para brindar una experiencia de visualización decente.
Esto significa que los desarrolladores podrían traicionar mi confianza y compartir videos no listados. Espero que no.
Mi razonamiento aquí es una sobrecarga baja y un rendimiento excelente. También me gustaría que el curso fuera gratuito en unos años. Al usar YouTube, puedo hacer que el curso sea gratuito al hacer públicos los videos.
El siguiente video analiza el flujo de control en la depuración. Esto comienza con lo básico, pero puede ser bastante profundo para saltar a la línea, forzar el retorno, etc. Estas son herramientas que pueden cambiar significativamente la forma en que depuramos el código.
¡No olvides revisar mi libro y suscribirte al canal de YouTube para futuros videos!
Bienvenido de nuevo a la segunda parte de la depuración en Scale, donde puedes aprender los trucos secretos de la depuración.
En esta sección, discutiremos el aspecto más básico de la depuración. Llegamos a un punto de quiebre. ¿Ahora que?
Bueno, aquí es donde los depuradores nos permiten controlar el flujo para investigar cómo funciona todo en un entorno controlado.
Entonces, ¿qué hay en la agenda para hoy?
Hablaremos de pasar por encima y entrar en el código, espero que la mayor parte de esta lista le resulte familiar. Es posible que los dos últimos elementos en los que interrumpimos el flujo de control no le resulten familiares. Estoy bastante seguro de que la mayoría de ustedes no están familiarizados con el último punto de la agenda. ¿Cómo puedo saber? ¡Siga sintonizado y enterese!
El paso por encima es la forma más básica de control de flujo. Dejamos que se ejecute el código en la línea y luego podemos inspeccionar los resultados en el panel de variables. Es simple y fácil.
En este caso, solo presioné el botón aquí un par de veces, pero también podría presionar F8 para obtener el mismo efecto...
A continuación, analizaremos dos operaciones distintas, entrar y salir. Step into entra en el método que invocamos. Tenga en cuenta que si no hay un método para entrar en el paso, actuará como paso por encima.
Tenemos dos operaciones paso a paso. El regular y el paso de fuerza en el que normalmente actúa de la misma manera. Necesitamos la versión forzada cuando queremos ingresar a una API que IntelliJ normalmente omitirá. Podemos presionar F7 para ingresar a un método. Podemos presionar Shift F7 para forzar el paso.
Cuando terminamos de ver un método y no nos importa el resto, podemos salir. Esto ejecuta el resto del método y regresa.
Tenga en cuenta que si tenemos un punto de interrupción antes de la devolución, aún se detendría en el punto de interrupción como vemos en este caso. Podemos presionar este botón aquí para salir o podemos presionar shift-F8 para hacer lo mismo.
Continuar continúa con la ejecución del proyecto hasta que se vuelve a alcanzar el punto de interrupción. Esto también se llama currículum. Es una característica simple que usamos mucho. Puede continuar presionando la versión especial del botón de reproducción aquí. El atajo también es útil ya que lo usamos mucho, es F9.
Run to cursor nos permite saltar líneas que no son interesantes y llegar al código que importa. Podemos establecer un punto de interrupción en esa línea para obtener el mismo efecto, pero a veces esto es más conveniente ya que elimina la necesidad de establecer y desactivar un punto de interrupción.
Podemos presionar este botón para correr hacia el cursor, o podemos usar ALT-F9 como atajo para esta característica.
Esta función se conoce como retorno forzado en IntelliJ/IDEA.
Para ver la opción de retorno forzado, hacemos clic derecho en el seguimiento de la pila y podemos ver un conjunto de opciones. Una opción aún más interesante es drop frame, que mostraré pronto.
Observe la opción de lanzar excepción, que es idéntica a forzar retorno, pero lanza una excepción del método.
Una vez que hago clic en esta opción, aparece un cuadro de diálogo para ingresar el valor de retorno del método. Esto me permite cambiar el valor devuelto por el método, lo cual es muy útil cuando quiero depurar un error difícil de reproducir.
Imagine un caso en el que le sucede una falla a un cliente, pero no puede reproducirla. En este caso, puedo simular lo que el cliente podría estar experimentando al devolver un valor diferente del método.
Aquí, el valor es una variable booleana, por lo que es simple. Pero su código podría devolver un objeto; usando esta técnica, puede reemplazar ese objeto con un valor arbitrario. Un buen ejemplo sería nulo, ¿y si este método devolviera un valor nulo, reproduciría el problema que está experimentando mi usuario?
Del mismo modo, lanzar una excepción nos permite reproducir casos límite, como lanzar una excepción debido a una falla arbitraria.
Una vez que presionamos OK, regresamos con un valor diferente. En este caso, estaba al borde del método, pero podría haberlo hecho al comienzo del método y haberme saltado la ejecución del método por completo.
Esto nos permite simular casos en los que un método puede fallar, pero queremos simular su comportamiento. Eso puede tener sentido si no podemos reproducir el comportamiento visto por el cliente. Podemos simular usando herramientas como esta.
Drop frame es casi igual de revolucionario, pero también es más un "buen truco". Aquí, entré en un método por error. Vaya, no quería hacer eso. Quería cambiar algo antes de intervenir... Por suerte, hay drop frame.
Vimos que puedo alcanzarlo en el menú contextual; también puede hacer clic aquí para activarlo.
Drop frame deja caer efectivamente el marco de pila. Es una operación de deshacer. Pero no es exactamente eso. No puede deshacer los cambios de estado que ocurrieron dentro del método que iniciamos.
Por lo tanto, si ingresó al método y se cambiaron las variables que no están en la pila, permanecerán cambiadas.
Las variables en la pila son aquellas variables que el método declara o acepta como argumentos, se restablecerán. Sin embargo, si una de esas variables apunta a un objeto, entonces ese objeto reside en el montón y los cambios allí no se pueden restablecer al desenredar la pila.
Esta sigue siendo una función muy útil similar a forzar retorno con la excepción de que volverá a la línea actual, no a la siguiente. Por lo tanto, no devolverá un valor.
¡Esto es aún mejor que eso!
Saltar a la línea es una función secreta en IntelliJ. Funciona, pero los desarrolladores no lo saben. Debe instalar el complemento Jump to Line para usarlo. Dado que tiene un número de instalaciones relativamente bajo, asumo que la gente simplemente no sabe que existe. Porque este es un complemento imprescindible. ¡Cambiará la forma de depurar!
Con salto a línea, podemos mover el puntero de instrucción actual a una posición diferente en el método. Podemos arrastrar la flecha de la izquierda para llevar la ejecución a una nueva ubicación. Tenga en cuenta que esto funciona en ambas direcciones, puedo mover la ejecución actual hacia adelante y hacia atrás.
Esto no ejecuta el código intermedio, literalmente mueve la instrucción actual a una nueva posición. Es genial, tengo que mostrarlo de nuevo...
Si ve un error, simplemente arrastre la ejecución hacia atrás y reprodúzcala. Puede cambiar los valores de las variables y reproducir el problema una y otra vez hasta que lo comprenda por completo.
Podemos saltarnos el código que está fallando, etc. Esto es espectacular. No necesito recompilar el código. Si alguna vez tuvo un caso en el que accidentalmente pasó por encima de una línea y, “Ups. Eso no es lo que quería.
Luego detuvo el depurador y comenzó desde cero. Este es el complemento para usted. ¡Esto les pasó a todos!
Podemos simplemente arrastrar la ejecución hacia atrás y hacer una repetición. ¡Es absolutamente fantástico!
En el siguiente video, hablaremos brevemente sobre el reloj. Profundizaremos mucho más en esto en el sexto video de la serie. ¡Así que estad atentos!
Si tiene alguna pregunta, utilice la sección de comentarios. ¡Gracias!