2012-10-10 11 views
24

जब आप अनंत लूप या रिकर्सिव कॉल में होते हैं, मूल रूप से ब्राउज़र किसी भी चीज़ (या तो क्रोम या एफएफ पर) का जवाब देना बंद कर देता है। आप लॉग नहीं देख सकते हैं, डीबगर में नहीं जा सकते हैं, यहां तक ​​कि आप कंसोल को भी नहीं खोल सकते हैं। ब्राउज़र बस बस जम जाता है। यह बहुत परेशान है। ऐसा लगता है कि मैं कुछ भी नहीं कर सकता लेकिन बैठे हुए मेरे सिर को खरोंच कर रहा हूं ... कोई भी इसे हल करने के तरीके पर प्रकाश डाल सकता है?जब जावास्क्रिप्ट में अनंत लूप और रिकर्सिव कॉल में जाता है तो जावास्क्रिप्ट को डीबग कैसे करें?

+3

से पहले पाश शुरू कर दिया है डीबगर में एक ब्रेकपाइंट सेट करें? – PhonicUK

+0

@PonicUK काम नहीं करता ..... – lkahtz

उत्तर

44

एक और चाल जो आप कोशिश कर सकते हैं, क्रोम में वेब डेवलपर टूल खोलने के लिए है और ब्राउज़र को स्पष्ट रूप से लटकते समय को रोकने का प्रयास करें। फिर इसे उस लाइन पर तोड़ना चाहिए जहां यह वर्तमान में निष्पादित हो रहा है। कुछ कदम उठाने के साथ आपको इसके नीचे जाना चाहिए।

मान लिया जाये कि आप जानते हैं (या संदिग्ध) समारोह जहां अनंत लूप आप इस तरह कोड जोड़ सकते हैं होता है:

var calls = 0; 
function iSuspectToBeLoopingInfititely() { 
    calls += 1; 
    if (calls > 100) { debugger; } 
} 

यह क्रोम में JavaScript डीबगर बंद हो जाएगा एक बार विधि 100 बार बुलाया गया है। नोट: यदि आपके पास वास्तव में डेवलपर टूल विंडो खुलती है तो क्रोम केवल debugger; कॉल के लिए तोड़ देगा।

+1

धन्यवाद, @Tigraine। यह काम! – lkahtz

+2

अच्छा जवाब। कभी भी 'रोकें' बटन का उपयोग करने के बारे में सोचा नहीं था (उच्च सीपीयू लोड के कारण बग को पुन: उत्पन्न करना मुश्किल था) –

+2

मैं इस जवाब पर वापस आ रहा हूं। प्रति सेकंड निष्पादन के # पर मनमानी घड़ियों को सेट करना और उल्लंघन करने वाले किसी भी फ़ंक्शन पर तोड़ना ब्राउज़र विकास उपकरण के लिए एक उत्कृष्ट जोड़ होगा। – Barney

0

मुझे क्रोम में समस्याएं थीं, मैं ब्राउज़र विंडो 'डीबगर में रोका गया' ब्राउज़र में देखता था लेकिन यह नहीं देख सका कि क्रोम को लूप में कब से भ्रमित कर दिया गया था ... फ़ायरफ़ॉक्स में, यह भी इसे लेने में मान्यता प्राप्त है लंबे समय तक और फिर 30 सेकंड के बाद एक पॉपअप आता है, फ़ाइल और सामान्य रेखा # यह जमे हुए कहता है जिस पर आगे डीबग करने और उस क्षेत्र के ब्रेकपॉइंट्स को सेट करने में मदद मिलती है।

-2

आप निम्न कोड का उपयोग कर एक अनंत लूप को रोक सकते हैं।

debugger;

संबंधित मुद्दे