2011-03-11 19 views
25

क्या यह संभव है, किसी भी ब्राउज़र में, किसी भी प्लगइन का उपयोग करके, प्रोग्राम को अपने कोड में ब्रेकपॉइंट्स को सक्षम या अक्षम करने के लिए?जावास्क्रिप्ट में प्रोग्रामेटिक रूप से ब्रेकपॉइंट्स को नियंत्रित करते हैं?

मुझे पहले से ही सशर्त ब्रेकपॉइंट्स सेट करने के बारे में पता है, लेकिन मैं वास्तव में उन्हें कोड के माध्यम से सेट करने में रूचि रखता हूं।

+1

संभावित डुप्लिकेट [कोड में जावास्क्रिप्ट ब्रेकपॉइंट सेट करें - क्रोम में?] (Http://stackoverflow.com/questions/10050465/set-a-javascript-breakpoint-in-code-in-chrome) अगर केवल शीर्षक में कीवर्ड "कोड" एसईओ देवताओं ने अन्यथा शासन किया होगा :-) –

उत्तर

23

आप फायरबग के लिए ब्रेकपॉइंट बनाने के लिए कोड में debugger; का उपयोग कर सकते हैं। उदाहरण के लिए:

alert('1'); 
debugger; 
alert('2'); 

और फ़ायरबग स्वचालित रूप से इस कीवर्ड पर बंद हो जाता है।

+1

फायरबग कंसोल में भी काम करता है! – CoolEsh

+0

हाँ, यह आसान है, लेकिन यह वास्तव में प्रोग्राम की तरह नहीं है जैसा कि मुझे चाहिए: उदाहरण के लिए, गतिशील रूप से किसी भी मनमानी फ़ंक्शन की शुरुआत में ब्रेकपॉइंट जोड़ना। – nickf

+0

इसे फायरबग के माध्यम से जोड़ें। यह वास्तव में द्विपक्षीय रूप से है। lol – CoolEsh

1

FireBug पर एक नज़र में कार्य डिबग (एफ एन) & undebug (एफ एन) के नाम जो नामित समारोह की पहली पंक्ति पर एक ब्रेकपाइंट निर्धारित किया है।

देखें बिंदु # 6:

http://michaelsync.net/2007/09/30/firebug-tutorial-script-tab-javascript-debugging

+0

में भी काम करता है क्या इसे जावास्क्रिप्ट से ही निष्पादित किया जा सकता है, या यह केवल फ़ायरबग कमांड लाइन से है? 'डीबग (myFunctionName) जोड़ना;' मेरे कोड में मेरे लिए एक त्रुटि फेंकता है। – nickf

26

सबसे पहले आप (__checkDebug की तरह एक समारोह के लिए एक कॉल जोड़ सकते हैं); जो एक वैश्विक (या अर्द्ध-ग्लोबल) चर की जांच करेगा और जब कहा गया चर सत्य है, तो डीबगर कॉल करें।


function __checkDebug() { 
    if (debugme) debugger; 
} 

अपने कार्यों के सभी आप डिबगिंग को लेकर चिंतित हैं तो जैसा होगा:


function foo() { 
    __checkDebug(); 

    //.... whatever foo was gonna do. 
} 

फिर आप यह थोड़ा आगे ले और गतिशील रूप जबकि कोड तो तरह क्रियान्वित किया जा रहा कार्यों को सजाने कर सकते हैं:


Function.prototype.debug = function(){ 
    var fn = this; 
    return function(){  
     if (debugme) debugger; 
     return fn.apply(this, arguments);  
    }; 
}; 

foo = foo.debug(); 

अब किसी भी समय foo कहा जाता है अगर डीबगमे चर सत्य है तो यह डीबगर कॉल करेगा।

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

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

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