2012-03-05 9 views
0

私はNode.jsにエクスポートされた関数を持っています。何らかの理由で、(同じデータが5分後に)同じデータで再び呼び出されます。たとえば、3つの異なる変数を使用して3回コールすると、同じ変数を使用して同じ順序で、呼び出しの間に同じ遅延で、しばらくしてから再び呼び出されます。今、私はこれをデバッグしようとしていて、その関数が再び呼び出されている場所を見つけようとしています。私はループやタイムアウトがなく、関数に渡される変数も保存していません。node.jsから関数がどこから呼び出されているかを調べる方法は?

その機能の呼び出し元を特定するために使用できるツールや機能はありますか?

PS。申し訳ありませんが、答えは一般的で、さまざまな方法で使用できるため、コード例はありません。ありがとう!

+0

[JavaScriptの呼び出し元関数はどのようにして見つけられますか?](http://stackoverflow.com/questions/280389/how-do-you-find-out-the-caller-function-in- javascript) –

+0

console.log(新しいエラー()。スタック); 4回目に関数が実行されるとスタックトレースが得られます。 –

答えて

0

多分あなたの問題は、コールがクロージャー内にあるという事実にあります。コードなしで正確に言うのは難しいです。 node-inspectorv8-profilerを使用してアプリをデバッグすることができます。 NPMを経由して(root権限が必要)グローバルノード・インスペクタをインストール

npm install -g node-inspector 

は、NPMを経由してあなたのアプリnode_modulesにV8-プロファイラをインストールします。

npm install v8-profiler 

アプリNTO V8-プロファイラを含めると、プロファイリングを開始:

var profiler = require('v8-profiler'); 
profiler.startProfiling('profile name'); 

// Critical code 

// profiler.stopProfiling('profile name'); // If needed 

デバッグモードでアプリを実行:

node --debug your/node/program.js 

スタートノード-インスペクター:お好みのWebKitベースのブラウザで

node-inspector --web-port=8081 & 

オープン

http://127.0.0.1:8080/debug?port=5858

node-inspector & 

あなたは--webポートのオプションとデフォルトの8080ポートを変更することができます。

[プロファイル]タブに移動し、プロファイリングを有効にします。その後、あなたのアプリケーションのすべてのprofiler.startProfilingコールが新しい実行トレースを作成し、 'cpu profiles'にそのアクションを表示する必要があります。

関連する問題