2011-05-01 14 views
2

私は、JavaScriptインタプリタがリアルタイムで何をしているのか、読み込み中でどの機能が実行中であるかを見たいと思っています。なぜなら、JavaScriptのすべての小さな部分を完全にデバッグして、 。このためには、インタプリタが正確に何をしているのかを教えてくれるツールが必要です。変数を定義している場合は関数を実行している場合はループしていて、現在の間隔を確認してください(setIntervalで定義)。JavaScriptをリアルタイムで実行することは可能ですか?

私が知っている限り、ファイヤーバグはそれを行うことができません。

+3

犬の遅いバイトコードインタープリターでも、レンダリングするには速すぎるというだけでなく、あなたには認識されないので、ほとんどそれをフォローすることはできません。 JITコンパイルしている現代のJSエンジンではTriplyなので。プロファイリングツールを使用する理由は、プログラムをいつものように実行し、収集したメトリックを静的テキストとして後で与えることです。 – delnan

+0

私はそれがとても難しくないとは思わない、それは他の言語では難しいだろうが、Javascriptはリアルタイム言語であり、そのすべてがそこにあるので、それはちょうど今何をしているのかを言うことができる。 – Grego

+0

ほとんどの実世界のJSアプリケーションよりも多くの計算を行うプログラムを実行してみてください。 [私の頭の上のこの抜粋](http://pastebin.com/w0T3Chzs)。それは私のマシン上で「即座に」(1秒未満で)終了します。これはFirefox 4を実行しているかなり古いコンピュータです。数値を文字列に変換して文字列を連結する数十万行の数学です。そしてそれは1秒未満で終わります。どのような線やループが書かれていてもそれよりもずっと長い時間がかかっていて、それで平らな目で観察するのに十分長いことを望みますか? – delnan

答えて

0

プログラムの自動監視/分析を行う場合は、ChromeのDebugger Protocolをご覧ください。プログラム的なAPIを提供します。 Web Inspectorやノードインスペクタなどのツールが構築されていると私は信じていますが(間違っている可能性があります)

標準のFirebug/Web Inspectorインターフェイスが構築されている以上のものを望むなら、このようなものを使用するか、V8とGecko JSインタープリタの内部をハッキングする必要があります。

6

Firebugのjavascriptタブを確認してください。完全なデバッガです。ブレークポイントを設定すると、コードがその行に当たると、変数などに対する完全なデバッグアクセス権が与えられます。標準インストールに含まれているdeveloper toolsには、Chromeに似た機能があります。

+1

ブレークポイントにヒットした後は、コードステップごとに変数の状態などを調べることができます。 –

+0

私は実行中のフルログを見たいのですが、なぜFirebugがそれに適していないのか、特定のポイントにブレークポイントを設定したくないという理由で、実行中のすべてのアクティビティのログを表示したいので、私はそれにアクセスしてブラウザで実行されているので、javascriptが何をしているのかを見ることができます – Grego

0

もう1つの答えは、ステップバイステップで実行したい場合は、デバッグポイントを設定することです。

パフォーマンスを向上させることに興味があるようだから、アプリケーションの真のボトルネックだけを最適化することを検討してください。どの機能が最も有効か調べるには、console.profile()(firebugとchromeの両方で利用可能)をご覧ください。ここで

は一例です:

console.profile('myProfile'); 
//some code you want to know more about 
console.profileEnd(); 

ます。また、クローム、あなたではコンソールパネルでプロフィールボタン(放火魔で)/プロファイルパネル(クローム)

をクリックして手動で起動することができますHeap Snapshots(メモリ使用量についても説明しています)をご覧ください。

関連する問題