私はかなり大規模なリッチ Web ページ JavaScript アプリケーションに取り組んでいます。何らかの理由で、最近の変更により、ブラウザーがランダムにハングするようになりました。
問題がどこにあるのかを絞り込むにはどうすればよいですか? ブラウザが応答しなくなり、エラーが表示されず、Break on next
FireBug を使用できません。
ベストアンサー1
コードを徹底的にコメントする代わりに、デバッグコンソールログ。
最新のブラウザのほとんどで提供されている機能を使用するconsole.log()
か、サポートされていないブラウザを使用する場合はエミュレートする必要があります。
を呼び出すたびにconsole.log('sometext')
、ブラウザのデバッグ コンソールに、指定したテキストと、通常は実際の時刻を含むログ エントリが作成されます。
アプリケーション フローの重要な部分の前にログ エントリを設定し、呼び出されていないログが見つかるまで設定を増やしていく必要があります。つまり、そのログの前のコードがブラウザーをハングさせているということです。
また、特定の変数の状態や、プログラム フローのより詳細な側面を含むオブジェクトなど、追加機能を備えた独自のログ関数を作成することもできます。
例
console.log('step 1');
while(1) {}
console.log('step 2');
無限ループによりプログラムは停止しますが、プログラムが停止する前までのプログラムフローが記録されたコンソール ログを引き続き表示できます。
したがって、この例では、コンソール ログに「ステップ 2」は表示されませんが、「ステップ 1」は表示されます。これは、プログラムがステップ 1 とステップ 2 の間で停止したことを意味します。
次に、2 つのステップの間にコード内の追加のコンソール ログを追加して、問題が見つかるまで深く検索することができます。