Quando si è nel ciclo infinito o nelle chiamate ricorsive, in pratica il browser smette di rispondere a qualsiasi cosa (su Chrome o FF). Non è possibile visualizzare i registri, non è possibile accedere al debugger, anche se non è possibile aprire la console stessa. Il browser semplicemente si blocca. Questo è così fastidioso. Sembra che non possa fare altro che sedermi qui a grattarmi la testa ... Chiunque può fare luce su come risolvere questo?Come eseguire il debug di javascript quando va in loop infiniti e chiamate ricorsive in Javascript?
Come eseguire il debug di javascript quando va in loop infiniti e chiamate ricorsive in Javascript?
risposta
Un altro trucco che si potrebbe provare è di aprire gli strumenti di sviluppo Web in Chrome e provare a premere Pausa quando il browser si blocca apparentemente. Quindi dovrebbe interrompersi sulla linea in cui è attualmente in esecuzione. Con qualche passo fuori dovresti arrivare alla fine di questo.
Supponendo che si sa (o sospetto) la funzione in cui il ciclo infite accade è possibile aggiungere codice come questo:
var calls = 0;
function iSuspectToBeLoopingInfititely() {
calls += 1;
if (calls > 100) { debugger; }
}
Questo fermerà il debugger JavaScript in Chrome una volta che il metodo è stato chiamato 100 volte. Nota: Chrome si interromperà solo per le chiamate debugger;
se la finestra Strumenti sviluppatore è aperta.
Grazie, @Tigraine. Funziona! – lkahtz
Bella risposta. Non ho mai pensato di usare il pulsante 'pause' (aveva un bug difficile da riprodurre che causava un carico di CPU elevato) –
Continuo a tornare a questa risposta. L'impostazione di orologi arbitrari su # di esecuzioni al secondo e l'interruzione di qualsiasi funzione che viola costituirebbe un'aggiunta eccellente agli strumenti di sviluppo del browser. – Barney
Avevo problemi con Chrome, vedevo nella finestra del browser 'Pausa nel debugger' ma non potevo vedere dove forse Chrome era confuso da quando era in loop ... In Firefox, ha riconosciuto che stava prendendo anche lungo e poi un popup si avvicina dopo 30 secondi a 1 minuto dicendo che il file e la linea generale # è congelato su cui aiuta a eseguire il debug di ulteriori e impostare i punti di interruzione intorno a quell'area.
È possibile interrompere un ciclo infinito utilizzando il seguente codice.
debugger;
- 1. Come eseguire il debug e la protezione da loop infiniti in PHP?
- 2. In che modo Javascript gestisce le chiamate ricorsive?
- 3. Come eseguire il debug di JavaScript offuscato?
- 4. Debug JavaScript in Eclipse
- 5. Debug JavaScript in ASP.NET
- 6. Come eseguire il debug di Javascript in webstorm quando gulp sta servendo l'applicazione
- 7. Funzioni di Javascript chiamate in Chrome
- 8. Come eseguire il debug di uno specifico evento click javascript?
- 9. Come limitare il tempo di esecuzione di una funzione in javascript?
- 10. Loop Over Array in Javascript
- 11. Come eseguire il debug di Javascript con IE 8
- 12. Differenza tra forEach e loop in javascript
- 13. numero Assert di chiamate ricorsive in Sinon
- 14. Debug javascript in opera mini
- 15. Rileva e cattura i loop infiniti di reindirizzamento in Rails
- 16. I loop infiniti sono in cattiva forma?
- 17. javascript timer loop
- 18. javascript: Come eseguire il debug degli eventi della tastiera
- 19. Pattern modulo JavaScript/Dojo: come eseguire il debug?
- 20. Come eseguire il comando shell in Javascript
- 21. Per loop Variazioni in javascript
- 22. setTimeout con Loop in JavaScript
- 23. In JavaScript, l'assegnazione concatenata va bene?
- 24. come eseguire javascript in delphi?
- 25. Javascript: parametri "infiniti" per la funzione?
- 26. JavaScript: Richiamo funzioni ricorsive con promesse
- 27. Debug javascript in tempo reale registrando chiamate e parametri delle funzioni
- 28. espressione regolare va in loop infinito
- 29. Google Chrome: come eseguire il debug degli errori "Massimo numero di stack di chiamate superate"
- 30. debug JavaScript all'interno IE6
impostare un breakpoint nel debugger prima di avviare il ciclo? – PhonicUK
@PhonicUK non funziona ..... – lkahtz