4 respuestas

★ Mejor respuesta

Algo que nunca ves mencionado es usar la pestaña Network en paralelo. A menudo crees que tu JavaScript está bugado cuando el problema es que una llamada API falló silenciosamente o devolvió datos raros. Siempre verifica las respuestas del backend antes de meterte en tu código front-end - te ahorras horas.

Para lo demás, el verdadero truco es aprender a leer el stack trace. Cuando salta un error, no mires solo dónde dice "error aquí", sino rastrea la cadena de llamadas que lo causó. A menudo la verdadera fuente del bug está dos o tres niveles más arriba en la cadena. Y si usas TypeScript o un linter decente, ya atrapas buena parte de los problemas antes incluso de hacer debugging de verdad.

¿Cuántos console.log() estás metiendo en el código antes de darte cuenta de que Chrome DevTools ya tiene todo lo que necesitas?

El verdadero cambio de perspectiva es dejar de pensar el debugging como una búsqueda del tesoro desesperada. Chrome DevTools tiene las Sources, que te permiten poner breakpoints de verdad - no solo "imprime este valor y espera" - y stepear línea por línea a través del código. Lo que la gente no usa lo suficiente es el watch de variables específicas, así ves en tiempo real qué cambia mientras el código se ejecuta. Después está el console drawer que siempre tienes a mano, perfecto para hacer chequeos rápidos sin interrumpir la ejecución.

Otra cosa que me ha salvado un montón de veces: usar la pestaña Network no solo para ver si las peticiones salen, sino para controlar exactamente qué recibes del servidor. Varias veces he pasado horas debuggeando lógica que en realidad era un problema en los datos que llegaban. Si la app es compleja y tiene estado interno, Vue DevTools o React DevTools (depende de lo que uses) son brutales - ves el estado mutando en tiempo real y vuelves atrás en los estados anteriores. No es magia, es solo que la gente muchas veces no sabe que existen.

Ah, y una última cosa obvia pero cierta: pon breakpoints condicionales. No siempre quieres pararte en una línea, quieres pararte solo cuando una cierta variable tiene un cierto valor. Al menos te ahorras tiempo clickeando "continue" mil veces.

No pierdas tiempo colocando breakpoints al azar en las funciones; en cambio, usa las Conditions de Chrome DevTools para detener la ejecución solo cuando una variable alcanza un valor específico - cambia completamente la forma en que rastreas los bugs en apps complejas. Y cuando te enfrentas a un error que parece aleatorio, la pestaña Network a menudo revela lo que no ves en el código, como race conditions o respuestas API mal formadas.

sole_silvia IT 🔍 Entusiasta 💬 48 respuestas ⚑

Cuando empiezas a debuggear, ¿cuántos breakpoints pones antes de darte cuenta de que el problema está probablemente en otro lado?

Lo que a menudo falta es un enfoque sistemático. Chrome DevTools es muy potente pero muchos solo usan console.log y breakpoints clásicos. Prueba los breakpoints condicionales: haz clic derecho en la línea de código, elige "Add conditional breakpoint" y escribe la condición que te interesa. Por ejemplo, un breakpoint que se active solo cuando `user.id === undefined` en lugar de pausarse cada vez. Luego usa los Logpoints (parecidos, pero imprimen un mensaje sin detener la ejecución) cuando necesites rastrear valores sin interrumpir el flujo.

Un truco que pocos conocen: en la pestaña Network de DevTools, puedes filtrar y ver exactamente qué va mal con tus solicitudes. Si la app se comporta de forma extraña, a menudo el problema es que una request no es lo que crees o la respuesta está malformada. Usa también la pestaña Performance si sospechas lag: registra lo que sucede y ve dónde el código realmente se ralentiza. Por último, aprende a usar los Watch expressions: en la sección Scope, añade las variables que te interesen y míralas actualizarse en tiempo real mientras avanzas en el código. Te ahorras un montón de logs innecesarios.

ricci1987 asker ¡Gracias por los consejos! Los conditional breakpoints y los logpoints no los usaba, son exactamente lo que buscaba. Probaré ahora mismo la pestaña Network para las solicitudes.

Tu respuesta

Iniciar sesiónpara responder.