こんにちは、私は巨大な JavaScript コードを含むプロジェクトに取り組んでいます。時には JavaScript コードが自動的に実行され、Chrome で「このページを強制終了します」というメッセージが表示されてブラウザがハングします。エラーを追跡する方法はありますか。その .javascript コードのデバッグについて何か提案をお願いします plz.
2 に答える
JavaScript内であなたが望むことをする方法はありません。
ただし、DynaTrace Ajax Editionなどのツールを使用して、ブラウザーでの CPU 使用率を追跡し、何が起こっているかを特定できます。
無限ループは、さまざまな不適切なプログラミング ロジックで発生する可能性があり、すべての場合に検出できる信頼できるロジックはありません。したがって、プログラミング言語または IDE が信頼できる無限ループ検出を提供するかどうかは非常に疑問です。
あなたが見たのは、基本的に、ブラウザが UI を更新して更新する前にスクリプトの実行にかかった時間に基づくランタイム検出でした。
この種の長時間実行される JavaScript は、無限ループが原因である場合もありますが、多くの場合、それらは単なる大きなループまたはあまりにも多くの作業を実行するループであり、UI が応答しなくなります。
JavaScript はマルチスレッドではないため、上記の後者のケースを回避するために、ループを小さな作業単位に分割することを検討できます。単位が終了したら、次の単位を実行せずに、次の作業単位を呼び出します。少しの時間遅延 (250ms など) で setTimeout を使用します。これにより、ブラウザは UI を呼吸して更新し、スクリプトを「長時間実行」スクリプトとしてマーク解除する機会が与えられます。
また、 Firebug Loggingなどのロギングを使用して、それらのループが実際に無限ループであるかどうかを確認するのに役立つ十分な値でループをログに記録することもできます。