2012-09-18 64 views
2

我已經繼承了一個非常大的項目,我試圖追查一個惱人的bug,但對於我的生活,我無法找到這個特定的動作被調用和執行的地方。有什麼方法可以查看JavaScript調用嗎?我可以在Firebug中暫停執行,但它總是停在addDomListenerOnce調用。查看JavaScript調用嗎?

+0

如果你能找到在代碼中的作用正在發生的事情,你可以把一個斷點,然後看看堆棧跟蹤,看看那裏的電話從何而來。 – some

+0

這就是問題所在,我無法在代碼中找到動作發生的位置。 – Don

+1

那麼你稱之爲「這個具體的行動」?它是如何定義的?在任何應用程序中都有gazillions方法調用,它們發生的速度太快,您無法看到它們。 –

回答

1

所有現代瀏覽器都提供調試功能。

Chrome Developer tools debbuging functions查找例子。設置斷點並在線後跟蹤執行線非常簡單。當然,你有調用堆棧,所以你可以看到函數從哪裏調用。

4

你可以加入這一行

debugger; 
你想要

。例如,作爲函數的第一行,你要檢查它是否被執行。這將停止腳本的執行,並且您可以檢查螢火蟲中的所有內容。

+0

[真正的問題,不是批評]那是跨瀏覽器嗎?它在哪裏定義? –

+0

@dystroy不知道這是否是完全跨瀏覽器,就必須檢查,但它肯定有螢火蟲/火狐(該海報是用) –

+3

它在[ECMA262-5(HTTP定義的工作:// WWW。 ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf)12.15「評估DebuggerStatement的產生可能允許一個實現在調試器下運行時產生一個斷點,如果一個調試器不存在或不活躍,這個語句沒有明顯的效果。「根據[此博客條目(http://planet.openbravo.com/?p=32334)在Firefox工作與螢火蟲,IE8和Chrome 9 – some

2

使用Opera的蜻蜓,你可以選擇「在新腳本的第一條語句中斷」(謝謝,@some)

這是在左上角的第五個按鈕。

+0

準確的標題是「在新劇本的第一個聲明中斷」(在Opera 12.02中) – some

+0

@some:謝謝,修正! – Andre