Depuración con Chrome DevTools

Rate this content
Bookmark

Jecelyn compartirá algunos consejos y trucos para ayudarte a depurar tu aplicación web de manera efectiva con Chrome DevTools.

11 min
11 Jun, 2021

Video Summary and Transcription

Aquí tienes algunos consejos para utilizar mejor DevTools, incluyendo el uso del comando de ejecución, personalización de atajos de teclado y emulación del efecto de enfoque. Aprende cómo inspeccionar la memoria, utilizar el panel de red para tener más control sobre las solicitudes de red y aprovechar las utilidades de la consola. Guarda código frecuentemente utilizado como fragmentos y utiliza anulaciones locales para facilitar la edición. Optimiza las imágenes utilizando un formato más optimizado como AVIF y realiza un seguimiento de los cambios en el panel de red para ver el tamaño de datos reducido.

Available in English

1. Consejos para aprovechar mejor DevTools

Short description:

Soy Jasleen Yin, la defensora del desarrollador de Chrome DevTools en Google. Aquí hay algunos consejos para aprovechar mejor DevTools para la depuración: usa el comando run para acceder rápidamente a paneles y funciones, personaliza tus propios atajos de teclado y emula el efecto de enfoque para depurar desplegables. Estén atentos para la próxima función.

Hola a todos, soy Jasleen Yin. Trabajo en Google. Soy la defensora del desarrollador de Chrome DevTools. Como desarrollador web, uso Chrome DevTools todos los días para depurar mis aplicaciones web.

Permítanme compartir con ustedes algunos consejos que pueden ayudarles a aprovechar mejor DevTools para la depuración. El primer consejo es sobre cómo llegar al panel o función que necesitas más rápido con el comando run. Por ejemplo, si quiero depurar mi video, puedo ir al comando run, escribir media y hacer clic enter para abrir el panel de medios. O si quiero capturar una captura de pantalla de una página, puedo usar el comando run con el atajo de teclado comando shift P y escribir capture. Aquí puedes ver una lista de opciones de captura de pantalla. Desplázate por la lista. Te sorprenderá ver cuántos comandos puedes ejecutar. El comando run me ayuda a ahorrar memoria en mi cerebro porque a veces simplemente no recuerdo qué panel abrir para emular el tema de CSS, por ejemplo.

A continuación, hay un montón de atajos de teclado en DevTools, pero nosotros, como humanos, tenemos una memoria limitada. En lugar de memorizar los atajos predefinidos de DevTools, ahora puedes personalizar tus propios atajos. Ve a configuración, atajos. Puedo personalizar el atajo del comando run. Puedo reemplazar el atajo actual comando shift P o agregar otro atajo, por ejemplo, opción C para el mismo comando. Si estás usando Visual Studio Code como editor de código, también puedes asignar los atajos a eso.

A continuación, hay momentos en los que quiero depurar mi desplegable de búsqueda. Sin embargo, cuando hago clic derecho en inspeccionar en el cuadro de búsqueda, el desplegable desaparece. Esto es molesto. Quiero decir, solo quiero depurar el desplegable. Por favor, ayuda. Tranquilízate. Saquemos el comando run y escribamos focus. Selecciona la opción de emular una página con enfoque. Problema resuelto. La razón es que el desplegable se activa cuando el usuario se enfoca en la entrada. Así que usa DevTools para emular el efecto de enfoque y listo.

A continuación, una nueva función.

2. Inspección de memoria, Panel de red y Consola

Short description:

Para la inspección de memoria, utiliza el inspector de memoria para inspeccionar los búferes de matriz y la memoria WASM. En el panel de red, encuentra los iniciadores y dependencias de las solicitudes de red, cambia el agente de usuario y utiliza filtros para tener un mayor control. En la consola, utiliza expresiones en vivo para realizar un seguimiento de los valores en tiempo real y aprovecha las utilidades de la consola.

Para aquellos que trabajan mucho con la memoria, ahora pueden utilizar el inspector de memoria para inspeccionar el búfer de matriz de JavaScript y la memoria WASM. Por ejemplo, aquí tengo un búfer de matriz. Vamos a establecer un punto de interrupción y actualizar la página. Observa el nuevo icono junto al valor del búfer. Haz clic en él para revelar el inspector de memoria. Luego puedes navegar y reanudar la ejecución del script para inspeccionar los cambios de memoria en tiempo real. Obtén más información sobre el inspector de memoria en esta documentación.

A continuación, veamos el panel de red. A veces queremos saber los iniciadores o dependencias de una solicitud de red en particular. Mantén presionada la tecla shift y coloca el mouse sobre la solicitud en la tabla de solicitudes. DevTools colorea los iniciadores en verde y las dependencias en rojo. Luego, puedes cambiar el agente de usuario en la pestaña de condiciones de red. Por ejemplo, si quieres asegurarte de que tu página funcione para la optimización de motores de búsqueda porque algunos servidores o configuraciones de CDN pueden bloquear los rastreadores de forma predeterminada. Puedes depurar este comportamiento haciendo clic en el icono de condiciones de red, elegir Google Bot en el menú desplegable y actualizar la página para ver si se producen errores. También puedes establecer un agente de usuario personalizado si no se encuentra en la lista. A continuación, algunos consejos sobre el filtro de red. Puedes filtrar la lista por tamaño. Aquí, uso la palabra clave `mayor que` para encontrar las solicitudes que son más grandes que 15 KB. ¿Y si quiero encontrar todas las solicitudes más pequeñas que 15 KB? Puedo usar el signo negativo para negar el resultado de este filtro. Por ejemplo, puedes excluir todas las solicitudes con estado 200 con el filtro de código de estado negativo 200.

A continuación, pasemos a la consola. Si te encuentras escribiendo la misma expresión de JavaScript una y otra vez durante la depuración, considera utilizar las expresiones en vivo. De esta manera, escribes una expresión una vez y luego la fijas en la parte superior de tu consola. El valor de las expresiones se actualiza casi en tiempo real. Me gustaría hacer un seguimiento de las imágenes punteadas en esta página. Haz clic en el icono de crear expresiones en vivo y escribe document.querySelectorOrImg.length. Haz clic derecho y duplica el elemento de imagen ahora. Mira, el número se actualiza automáticamente. ¿Genial, verdad? También hay algunas utilidades útiles de la consola que pueden ahorrarte tiempo de escritura. Ahora mismo, usamos document.querySelectorOr para obtener las imágenes punteadas de la página.

3. Utilidades de la consola, Fragmentos de código y Anulaciones locales

Short description:

Podemos utilizar el comando $$ para imprimir el elemento de imagen actualmente seleccionado y combinarlo con copy para copiar el elemento al portapapeles. Guarda el código utilizado con frecuencia como fragmentos en el panel de fuentes. Utiliza las anulaciones locales en el panel de fuentes para realizar cambios en las cargas de página, lo que permite una edición sencilla sin implementaciones.

Podemos utilizar el comando $$ para hacer lo mismo. Además, si quiero imprimir el elemento de imagen que tengo actualmente seleccionado, puedo usar $0 en lugar de escribir console.log. Puedo combinar el comando $ con copy para copiar el elemento al portapapeles. En realidad, hay más utilidades de la consola. Consulta la documentación para comandos como monitorEvents, queryObjects y profile.

A continuación, si tienes código que utilizas con frecuencia, puedes guardarlos como fragmentos. Ve al panel de fuentes y abre el panel de fragmentos. Crea un nuevo fragmento, por ejemplo, el comando de copia que escribimos anteriormente. Guárdalo. Ahora, ve al panel de elementos y selecciona un elemento. Podemos ejecutar un fragmento para copiarlo. Utiliza el comando P para abrir el menú de comandos. Luego escribe un signo de exclamación seguido del nombre del fragmento. El signo de exclamación aquí significa ejecutarlo ahora. ¡Listo! Continúa y guarda todos tus comandos de uso frecuente como fragmentos.

A continuación, una función mencionada. Utiliza las anulaciones locales para mantener los cambios en las cargas de página. Por ejemplo, mi amigo Jack está buscando sugerencias para renovar su sitio web sobre fotografías de buceo. Podemos editar eso localmente sin implementaciones. Ve al panel de fuentes, selecciona el panel de anulaciones, luego selecciona una carpeta para las anulaciones. Haz clic en permitir para otorgar acceso a DevTools a la carpeta. Ahora podemos editar la página. Agreguemos su nombre al título. Intenta actualizar la página ahora. ¡Ups, recuerda que los cambios no se aplican si los editas en el panel de elementos. La edición debe realizarse en el panel de fuentes. Intentémoslo de nuevo. Guarda los cambios y actualiza la página. ¡Genial, los cambios se mantienen ahora!

4. Optimización de imágenes y seguimiento de cambios

Short description:

A Jack le gusta el color granate. Cambiemos también el título a color granate. Veamos las imágenes ahora. Jack puede usar un formato de imagen más optimizado como AVIF para mejorar el rendimiento de la página. Ve al panel de red, filtra por imagen para ver el tamaño actual de descarga de datos. Son aproximadamente 450 KB. Mejora el código utilizando el elemento picture. Selecciona todas las etiquetas de imagen, agrega el formato AVIF y elimina los nombres de las imágenes. Guarda y actualiza la página. Verifica el panel de red para ver el tamaño reducido de datos.

A Jack le gusta el color granate. Cambiemos también el título a color granate. Bien. Veamos las imágenes ahora. Creo que Jack puede usar un formato de imagen más optimizado como AVIF para mejorar el rendimiento de la página. Ve al panel de red, filtra por imagen para ver cuántos datos descargamos para la imagen actualmente. Son aproximadamente 450 KB. Mejoremos el código utilizando el elemento picture. Usa el comando D para seleccionar todas las ocurrencias de etiquetas de imagen y agrega el formato de imagen AVIF. Elimina los nombres de las imágenes y cierra también la etiqueta picture. Listo. Guarda todos los cambios y actualiza la página. Vamos al panel de red para ver cuántos datos se cargan ahora. Bien, hemos reducido casi la mitad de los datos aquí. Por cierto, Brian y Uma tienen un excelente contenido sobre cómo utilizar anulaciones locales para comparar y optimizar la velocidad de la página. Échale un vistazo. Genial, ahora puedo proponer los cambios a Jack. Pero olvidé qué cambios he realizado hasta ahora. Sería genial si DevTools rastreara todos mis cambios y me mostrara las diferencias. Y sí, en realidad hay una pestaña de cambios para eso. Abrámosla. Aquí puedes ver todos los cambios que hemos realizado hasta ahora. También puedes hacer clic para deshacer los cambios. ¿Sabías que DevTools es una aplicación web en sí misma? Está construida con HTML, CSS y JavaScript. De hecho, puedes usar DevTools para depurar DevTools. Asegúrate de que tu herramienta de desarrollo esté desacoplada, luego presiona Comando-Option-C para abrir otra instancia de DevTools. Ahora puedes inspeccionar DevTools con DevTools como cualquier otra aplicación web. Nuestro equipo acaba de migrar la base de código de DevTools de JavaScript a TypeScript y refactorizó la base de código para utilizar los nuevos módulos de JavaScript. Publicamos en nuestro blog cómo hicimos todo esto. Si quieres aprender más sobre cómo construimos DevTools, visita nuestro blog en goo.goo.gov devtools-blog. Por último, si quieres darnos tu opinión o informar algún problema de DevTools, puedes hacer clic en Más opciones, Ayuda, Informar un problema de DevTools o comunicarte con nosotros en Twitter de Chrome DevTools. Gracias por ver. Espero que este consejo te ayude a disfrutar más de DevTools. Sígueme en Twitter si tienes alguna pregunta. ¡Ciao!

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

JSNation 2023JSNation 2023
29 min
Modern Web Debugging
Top Content
Few developers enjoy debugging, and debugging can be complex for modern web apps because of the multiple frameworks, languages, and libraries used. But, developer tools have come a long way in making the process easier. In this talk, Jecelyn will dig into the modern state of debugging, improvements in DevTools, and how you can use them to reliably debug your apps.
JSNation 2022JSNation 2022
21 min
The Future of Performance Tooling
Top Content
Our understanding of performance & user-experience has heavily evolved over the years. Web Developer Tooling needs to similarly evolve to make sure it is user-centric, actionable and contextual where modern experiences are concerned. In this talk, Addy will walk you through Chrome and others have been thinking about this problem and what updates they've been making to performance tools to lower the friction for building great experiences on the web.
React Summit 2023React Summit 2023
24 min
Debugging JS
Top Content
As developers, we spend much of our time debugging apps - often code we didn't even write. Sadly, few developers have ever been taught how to approach debugging - it's something most of us learn through painful experience.  The good news is you _can_ learn how to debug effectively, and there's several key techniques and tools you can use for debugging JS and React apps.
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
pnpm – a Fast, Disk Space Efficient Package Manager for JavaScript
You will learn about one of the most popular package managers for JavaScript and its advantages over npm and Yarn.A brief history of JavaScript package managersThe isolated node_modules structure created pnpmWhat makes pnpm so fastWhat makes pnpm disk space efficientMonorepo supportManaging Node.js versions with pnpm
React Advanced Conference 2021React Advanced Conference 2021
27 min
Beyond Virtual Lists: How to Render 100K Items with 100s of Updates/sec in React
Top Content
There is generally a good understanding on how to render large (say, 100K items) datasets using virtual lists, …if they remain largely static. But what if new entries are being added or updated at a rate of hundreds per second? And what if the user should be able to filter and sort them freely? How can we stay responsive in such scenarios? In this talk we discuss how Flipper introduced map-reduce inspired FSRW transformations to handle such scenarios gracefully. By applying the techniques introduced in this talk Flipper frame rates increased at least 10-fold and we hope to open-source this approach soon.
JSNation 2022JSNation 2022
30 min
High-Speed Web Applications: Beyond the Basics
Knowing how to run performance tests on your web application properly is one thing, and putting those metrics to good use is another. And both these aspects are crucial to the overall success of your performance optimization efforts. However, it can be quite an endeavor at times for it means you need to have a precise understanding of all the ins and outs of both performance data and performance tooling. This talk will shed light on how to overcome this challenge and walk you through the pitfalls and tricks of the trade of Chrome DevTools, providing you with a complete roadmap for performance analysis and optimization.

Workshops on related topic

React Summit 2023React Summit 2023
170 min
React Performance Debugging Masterclass
Top Content
Featured WorkshopFree
Ivan’s first attempts at performance debugging were chaotic. He would see a slow interaction, try a random optimization, see that it didn't help, and keep trying other optimizations until he found the right one (or gave up).
Back then, Ivan didn’t know how to use performance devtools well. He would do a recording in Chrome DevTools or React Profiler, poke around it, try clicking random things, and then close it in frustration a few minutes later. Now, Ivan knows exactly where and what to look for. And in this workshop, Ivan will teach you that too.
Here’s how this is going to work. We’ll take a slow app → debug it (using tools like Chrome DevTools, React Profiler, and why-did-you-render) → pinpoint the bottleneck → and then repeat, several times more. We won’t talk about the solutions (in 90% of the cases, it’s just the ol’ regular useMemo() or memo()). But we’ll talk about everything that comes before – and learn how to analyze any React performance problem, step by step.
(Note: This workshop is best suited for engineers who are already familiar with how useMemo() and memo() work – but want to get better at using the performance tools around React. Also, we’ll be covering interaction performance, not load speed, so you won’t hear a word about Lighthouse 🤐)
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript, and TDD
Top Content
Featured WorkshopFree
ReactJS is wildly popular and thus wildly supported. TypeScript is increasingly popular, and thus increasingly supported.

The two together? Not as much. Given that they both change quickly, it's hard to find accurate learning materials.

React+TypeScript, with JetBrains IDEs? That three-part combination is the topic of this series. We'll show a little about a lot. Meaning, the key steps to getting productive, in the IDE, for React projects using TypeScript. Along the way we'll show test-driven development and emphasize tips-and-tricks in the IDE.
React Advanced Conference 2023React Advanced Conference 2023
148 min
React Performance Debugging
Workshop
Ivan’s first attempts at performance debugging were chaotic. He would see a slow interaction, try a random optimization, see that it didn't help, and keep trying other optimizations until he found the right one (or gave up).
Back then, Ivan didn’t know how to use performance devtools well. He would do a recording in Chrome DevTools or React Profiler, poke around it, try clicking random things, and then close it in frustration a few minutes later. Now, Ivan knows exactly where and what to look for. And in this workshop, Ivan will teach you that too.
Here’s how this is going to work. We’ll take a slow app → debug it (using tools like Chrome DevTools, React Profiler, and why-did-you-render) → pinpoint the bottleneck → and then repeat, several times more. We won’t talk about the solutions (in 90% of the cases, it’s just the ol’ regular useMemo() or memo()). But we’ll talk about everything that comes before – and learn how to analyze any React performance problem, step by step.
(Note: This workshop is best suited for engineers who are already familiar with how useMemo() and memo() work – but want to get better at using the performance tools around React. Also, we’ll be covering interaction performance, not load speed, so you won’t hear a word about Lighthouse 🤐)
JSNation 2022JSNation 2022
71 min
The Clinic.js Workshop
Workshop
Learn the ways of the clinic suite of tools, which help you detect performance issues in your Node.js applications. This workshop walks you through a number of examples, and the knowledge required to do benchmarking and debug I/O and Event Loop issues.
JSNation 2023JSNation 2023
44 min
Solve 100% Of Your Errors: How to Root Cause Issues Faster With Session Replay
WorkshopFree
You know that annoying bug? The one that doesn’t show up locally? And no matter how many times you try to recreate the environment you can’t reproduce it? You’ve gone through the breadcrumbs, read through the stack trace, and are now playing detective to piece together support tickets to make sure it’s real.
Join Sentry developer Ryan Albrecht in this talk to learn how developers can use Session Replay - a tool that provides video-like reproductions of user interactions - to identify, reproduce, and resolve errors and performance issues faster (without rolling your head on your keyboard).