2017-03-22 13 views
2

呼び出し元がChromeのコールスタックに表示されていないJavaScript関数の呼び出し元を知る方法はありますか?コールスタックはAngularjs関数呼び出しで埋められていますが、これは私には役に立ちません。 Angular.jsはブラックボックス化されていますが、起動しないブレークポイントには便利です。Chromeのコールスタックに発信者が表示されないJavascript機能の発信者が誰であるかを知る方法はありますか?

私は関数名のテキスト検索を行い、すべての呼び出し元にブレークポイントを置くことによって呼び出し元を見つけることができますが、それはクルージングです。

anglejsコールをコールスタックに表示しない方法も探しています。または、すべての通話を記録する方法はありますか?実際の関数呼び出し元が呼び出しスタックペインをスクロールしたようです。

+0

「呼び出し元」が呼び出しスタックに表示されないものは何を意味しますか? – Bergi

+0

呼び出し元は、別の関数を呼び出す関数またはイベントです。コールスタックペインにはスペースが限られています。呼び出し元と呼び出された関数の間に限られた数の呼び出しを表示することができます。 –

+0

テールコールについて話していない限り、コールスタックには常にすべての*発信者が含まれます。それは彼らがどこに戻るかを知るために覚えておく必要があります。 – Bergi

答えて

0

私は通常やっていることは次のとおりです。

  1. はプロファイル
  2. トリガーに
  3. オープンのdevのツール
  4. 行くプロファイル]タブにデバッグするために約どこへ
  5. [スタート]ボタンをあなたのページをNAVページ上のイベント(クリックするか他の方法でイベントを発生させる)
  6. クリックしてプロフィールの停止ボタン
  7. 目似たアイコン以外のドロップダウンがあり、左上隅にあなただけのプロファイルレポートに
  8. を保存したプロファイルを選択し、
  9. がイベントをちょうど見つけるために、ツリーのノードを展開ツリー(トップダウン)を選択呼び出された関数が何であるかを確認します。
  10. また、右側のファイル名のリンクをクリックすると、詳細を表示するか、ブレークポイントを設定するには、ctrl + F4(MACの場合は+ comm4 + MAC)、キーワードを入力してファイル名を受け入れる場合は
  11. ソースビューにリダイレクトされます

通常、個人的な経験はイベントの角度がどの機能を呼び出すのか分かりませんが、特定の名前や接頭辞または接尾辞を持つ.jsファイルを呼び出すことはわかります。私は、プロファイルを実行し、.jsファイルをフィルタリング、およびファイル名のリンクをクリックすると、それは、[ソース]タブで、詳細機能情報に私をリダイレクトし

プロファイルの

詳細:https://developer.chrome.com/devtools/docs/profiles

2

あなたが表示されない場合コールスタック内の呼び出し元が、実行が異なるコンテキストで実行されていることを意味する可能性があります。右側のAsyncオプションをオンにすると、クロスコンテキストコールスタックが表示されます。

Async

あなたは通話の一部について(anonymous)を見ることができます。匿名コールバック関数を使用する場合は、これは非常に一般的です。名前を付けると、デバッグの操作性が向上します。たとえば:

function myFunc(cb) { 
    setTimeout(cb, 100); 
} 

myFunc(function myCallback() { 
    debugger; 
}) 

Async callback

私は角知りませんが、私は$httpと特定、スタックトレースはかなり貧弱であることを読みました。 Bluebird JS約束を使用することをお勧めします。これには、long stack tracesというオプションがあります。ディスカッションhereを参照してください。

関連する問題