Cuando está en el bucle infinito o llamadas recursivas, básicamente el navegador deja de responder a cualquier cosa (ya sea en Chrome o FF). No puede ver los registros, no puede acceder al depurador, incluso no puede abrir la consola. El navegador simplemente se congela. Esto es muy molesto Parece que no puedo hacer nada más que sentarme aquí rascándome la cabeza ... ¿Alguien puede arrojar luz sobre cómo resolver esto?¿Cómo depurar javascript cuando entra en bucles infinitos y llamadas recursivas en Javascript?
Respuesta
Otro truco que podría intentar es tener abiertas las herramientas de desarrollador web en Chrome e intentar presionar Pause cuando aparentemente se bloquea el navegador. Entonces debería romperse en la línea donde se está ejecutando actualmente. Con algunos pasos, debes llegar al fondo de esto.
Suponiendo que usted sabe (o cree) la función donde el bucle infite ocurre que podría añadir un código como éste:
var calls = 0;
function iSuspectToBeLoopingInfititely() {
calls += 1;
if (calls > 100) { debugger; }
}
Esto detendrá el depurador de JavaScript en Chrome una vez que el método ha sido llamado 100 veces. Nota: Chrome solo interrumpirá las llamadas debugger;
si realmente tiene la ventana Herramientas del desarrollador abierta.
Gracias, @Tigraine. ¡Esto funciona! – lkahtz
Buena respuesta. Nunca pensé en usar el botón 'pausa' (tenía un error difícil de reproducir que causaba una alta carga de cpu) –
Sigo volviendo a esta respuesta. Configurar relojes arbitrarios en # de ejecuciones por segundo y romper cualquier función que viole sería una excelente adición a las herramientas de desarrollo del navegador. – Barney
Tuve problemas en Chrome, me gustaría ver en la ventana del navegador 'Paused in depurador', pero no pude ver dónde, ya que tal vez Chrome se confundió porque estaba en un bucle ... En Firefox, reconoció que también tomaba largo y luego aparece una ventana emergente después de 30 segundos a 1 minuto diciendo que el archivo y la línea general # está congelada, lo que ayuda a depurar aún más y establecer puntos de interrupción en esa área.
Puede detener un bucle infinito utilizando el siguiente código.
debugger;
- 1. ¿Cómo depurar y proteger contra los bucles infinitos en PHP?
- 2. ¿Cómo detectar y evitar bucles infinitos?
- 3. ¿Java reconoce los bucles infinitos?
- 4. ¿Por qué usar bucles infinitos?
- 5. ¿Cómo depurar JavaScript en IE?
- 6. Depurar JavaScript en Eclipse
- 7. Depurar JavaScript en ASP.NET
- 8. ¿Cómo depurar JavaScript ofuscado?
- 9. Javascript: parámetros "infinitos" para la función?
- 10. cómo depurar errores de Javascript en IE8
- 11. Funciones de Javascript llamadas en Chrome
- 12. QML Animación con "velocidad" e infinitos "bucles"
- 13. ¿Es pecado utilizar recursión infinita para bucles infinitos en Python?
- 14. ¿Cuándo son útiles los bucles infinitos en PHP?
- 15. Depurar Javascript IE 9
- 16. Llamadas paralelas de Ajax en Javascript/jQuery
- 17. Cómo depurar código JavaScript con navegadores móviles
- 18. javascript: Cómo depurar eventos de teclado
- 19. JavaScript/Dojo Module Pattern: ¿cómo depurar?
- 20. Cómo depurar llamadas remotas .NET?
- 21. Cómo depurar Javascript con IE 8
- 22. ¿Por qué no se muestran toString y hasOwnProperty (etc) en bucles for-in en JavaScript?
- 23. ¿Una herramienta para detectar llamadas recursivas innecesarias en un programa?
- 24. ¿Se les permite a los compiladores eliminar infinitos bucles?
- 25. iteración orden de bucles for..in en Javascript
- 26. Cuando la función devuelve resultado y cuando funciona en JavaScript
- 27. ¿Cómo aumentar la cantidad máxima de llamadas en Javascript?
- 28. ¿Cuál es la mejor manera de hacer bucles en JavaScript
- 29. JsTree entra en conflicto con jquery.validate
- 30. Depuración en javascript en vivo mediante la grabación de llamadas a funciones y parámetros
Establecer un punto de interrupción en el depurador antes de iniciar el bucle? – PhonicUK
@PhonicUK no funciona ..... – lkahtz