Comment puis-je déboguer des fuites de mémoire, des boucles infinies et l'exécution de Javascript dans le navigateur?
Quels sont les moyens recommandés pour vérifier les boucles infinies en javascript dans le navigateur? Dire que j'ai ouvrez google Chrome et il se bloque, est-il un moyen de point d'arrêt ou d'une autre manière de préciser les domaines où qui ont eu lieu?
Alors je me demandais, comment puis-je voir une liste de l'exécution de scripts dans le navigateur (dire que certains minuterie j'ai perdu la trace de qui est la course et c'est ralentir les choses)? De préférence dans Chrome/Safari, mais Firefox serait trop de travail.
- Je utiliser l'élément inspecteur/console de tous les temps, je n'en ai pas trouvé des moyens efficaces de déboguer ces 3 choses.
Merci!
source d'informationauteur Lance Pollard
Vous devez vous connecter pour publier un commentaire.
Pour un script qui bloque le navigateur, vous pouvez insérer un point d'arrêt de n'importe où dans votre code avant qu'il se bloque. Alors juste manuellement étape à travers tout le code jusqu'à ce qu'il se bloque. Si vous ne parvenez pas à insérer le point d'arrêt avant que le navigateur se bloque, vous pouvez ajouter le "debugger;" déclaration de quelque part dans votre code. Que, fondamentalement, insère le point d'arrêt à ce point dans le code.
Une façon de voir ce qui est en cours d'exécution à partir de votre JS est de profil. Tous les outils de dev viennent avec un profiler. Juste le profil de votre code pendant quelques secondes après le chargement de la page, et il vous donnera un aperçu de ce qui est encore en cours d'exécution. Si vous utilisez une librairie comme jQuery, vous verrez beaucoup de interne des fonctions jQuery et un peu de votre propre. Regardez la fonction qui prend le plus de temps d'exécution (par appel) et d'essayer de minimiser leur utilisation, comme ceux qui sont les plus coûteux.
Si vous avez une boucle infinie dans le "non-threaded" JS, votre page ne se charge pas entièrement à tous. Firefox devrait vous indiquer que le script prend du temps pour charger et vous permettent de déboguer (qui serait de vous montrer où il est). Pour "filée" JS (qui est exécuté à partir d'un rappel ou un setTimeout), vous pouvez les suivre avec le générateur de profils.
1. Les fuites de mémoire
2. Inifinite boucles
Je n'ai pas de comprendre exactement ce que le navigateur puisse vous dans le cas du complexe boucle infinie se répandent à travers des centaines de fonctions. Bien sûr, j'aimerais le navigateur pour identifier de simples boucles comme une fonction ne retourne pas pendant 15 secondes. Mais nous avons au moins une chose, le navigateur vous dit a) que le script est en cours d'exécution lente, et b) quelles sont les fonctions ont été appelés et combien de temps chacun a pris. Aussi, vous pouvez définir un point d'arrêt et de le regarder à exécuter étape par étape.
3. La surveillance des minuteries et des intervalles de
Ouvrir WebKit du panneau montage, cliquez sur "Enregistrer" et le suivi de tout ce que vous voulez savoir sur chaque horloge et l'intervalle.
Si vous n'êtes pas en utilisant WebKit vous pouvez coder quelque chose de simple vous-même:
D'habitude j'ai tout simplement faire du document.le titre met à clignoter lorsque le délai d'expiration/intervalle d'incendies.
4. Code général des performances