2017-01-09 13 views
0

同じプログラムを実行する必要がある2つのプログラムがあります。ではない。彼らの実行がどこで違うのかを見たいと思います。 ChromeやFirefox、SafariにJavaScriptが実行されるたびにログ/エコーするオプションがありますか?または、いくつかの行ごとにconsole.logを手作業で追加するのに手間がかかりませんか?注:発散は10kまたは20kで、おそらくは100k行あり、理想的にはChrome開発ツールに似た変数を出力したいと思っています。実行時にJavaScriptの各行をエコーする方法はありますか?

その後、私はちょうどログをダンプすることができますし、

は、デバッガでコードをステップ実行発散を見つけられない日はそこまでステップする場合、それは時間を取るようなソリューションではありません。

1つのアイデアは、それぞれの行のコードを出力して、それがやりたいことを印刷するために最後の行を使用するためにbabelまたはuglifyプラグインを使用することです。

もう一つのアイデアは、すべてのオブジェクトとすべての参照を比較できるように、jsからすべてのメモリをダンプする方法がある場合です。彼らは同じでなければならないので、私が違う2つのダンプを見ると、私はバグを見つけたでしょう。注:JSON.stringifyは、すべての変数/オブジェクト/クラスなどを参照する必要があるため、オプションではありません。

注:「console.logを使用する」または「デバッガのステップ」のような基本的な回答は探していません。 。私は助けていただきありがとうございます。多分簡単なことを見落としてしまったかもしれませんが、JavaScriptの経験はかなりあります。

例が役立つかもしれません。あなたがGoogleドキュメントのような大きさのアプリを入手したとします。あなたは何かを壊したり何かを変えたりしてはいけないプロセッサーをその上に走らせます。それを除いて。あなたは変化を見て、何か間違って見ることはできません。あなたが知っていることは、実行すると実行されますが、いくつかのことは微妙に壊れています。だからあなたはそこにブレークポイントを置き、データが悪いと見ます。しかし、いつそれが悪くなったのですか?あなたはコードを知りません(ちょうどそれを持っています)。以前は数百万行にもなる可能性がありました。ブレークポイントやconsole.logをどこに置くべきかはわかりません。数週間かかることがあります。しかし、すべての実行行を出力することができれば、バグは数日ではなく数分で見つかります。

+10

ありませんが、あなたはブレークポイントを設定し、コードをウォークスルーするか、手動ではconsole.logの行を追加することができます。 – epascarello

+0

あなたは[Chrome DevTools Step-Code](https://developers.google.com/web/tools/chrome-devtools/javascript/step-code)を読むことができます –

+0

デバッガとバイナリ検索を使用して、実行可能である。 – Bergi

答えて

3

function()の先頭またはご希望の場所にdebugger;を追加し、にコンソールを開くことができます。

debuggerに達すると、実行を停止します。その後、コードを段階的に実行して時計を追加することができます。

最近のすべてのブラウザで正常に動作します。

例:

function test() 
 
{ 
 
var rand = Math.random(); 
 
debugger; 
 
return rand; 
 
} 
 

 
test();

+0

答えをありがとうが、これは質問への答えではありません。問題はデバッグする方法ではなく、問題は* JavaScriptが実行されるたびにその行をエコーする方法はありますか? – gman

関連する問題