मैं अपने जावास्क्रिप्ट कोड को कैसे डीबग कर सकता हूं? [बन्द है]


113

जब मुझे पता चलता है कि मेरे पास समस्याग्रस्त कोड स्निपेट है, तो मुझे इसे डीबग करने के बारे में कैसे जाना चाहिए?

जवाबों:


78

इस उद्देश्य के लिए फायरबग सबसे लोकप्रिय उपकरणों में से एक है।


8
इसे लिंक करें: getfirebug.com
बैकस्ट्रॉम

7
मुझे फायरबग पसंद है, लेकिन मैं इसे वेबकिट के इंस्पेक्टर के ऊपर सिर और कंधे होने का दावा नहीं करूंगा।
रयान फ्लोरेंस

2
फायरबग उस समय से आगे था जब वह बाहर आया था, लेकिन मुझे नहीं लगता कि यह सबसे अच्छा उपकरण के रूप में खड़ा है, अन्य उपकरण दिए गए हैं जो हाल ही में सामने आए हैं।
जेम्स

जब से मैंने इसकी खोज की, मैं Firebug का उपयोग कर रहा हूँ, और यह मुझे बहुत मदद करता है! कंसोल.डबग, प्रोफाइलर, इंस्पेक्टर ...
जूलियो ग्रीफ

@NinaScholz अब सभी ब्राउज़र डिफ़ॉल्ट रूप से जेटपैक के साथ आते हैं!
oneCoderToRuleThemAll

74

सभी आधुनिक ब्राउज़र एक अंतर्निहित जावास्क्रिप्ट डीबगिंग एप्लिकेशन के कुछ रूप के साथ आते हैं। इनका ब्योरा संबंधित प्रौद्योगिकियों के वेब पेजों पर दिया जाएगा। जावास्क्रिप्ट डीबग करने के लिए मेरी व्यक्तिगत प्राथमिकता फायरबग है फ़ायरफ़ॉक्स में है। मैं यह नहीं कह रहा हूं कि फायरबग किसी अन्य की तुलना में बेहतर है; यह आपकी व्यक्तिगत पसंद पर निर्भर करता है और आपको वैसे भी सभी ब्राउज़रों में अपनी साइट का परीक्षण करना चाहिए (मेरी व्यक्तिगत पहली पसंद हमेशा फायरबग है)।

मैं नीचे दिए गए कुछ उच्च-स्तरीय समाधानों को कवर करूँगा, उदाहरण के तौर पर Firebug का उपयोग करते हुए :

फ़ायरफ़ॉक्स

फ़ायरफ़ॉक्स अपने स्वयं के इनबिल्ट जावास्क्रिप्ट डिबगिंग टूल के साथ आता है, लेकिन मैं आपको फायरबग ऐड को स्थापित करने की सलाह दूंगा । यह मूल संस्करण के आधार पर कई अतिरिक्त सुविधाएँ प्रदान करता है जो आसान हैं। मैं यहाँ केवल Firebug की बात करने जा रहा हूँ।

एक बार फायरबग स्थापित होने के बाद आप इसे नीचे की तरह एक्सेस कर सकते हैं:

सबसे पहले यदि आप किसी भी तत्व पर राइट क्लिक करते हैं तो आप Firebug के साथ तत्व का निरीक्षण कर सकते हैं :

फायरबग में तत्व का निरीक्षण करें

इसे क्लिक करने से ब्राउज़र के नीचे Firebug पेन खुल जाएगा:

फायरबग पेन

फायरबग कई सुविधाएँ प्रदान करता है, लेकिन हम जिसकी रुचि रखते हैं वह स्क्रिप्ट टैब है। स्क्रिप्ट टैब पर क्लिक करने से यह विंडो खुलती है:

स्क्रिप्ट टैब

जाहिर है, डीबग करने के लिए आपको पुनः लोड करने की आवश्यकता है :

Sctipt टैब में जावास्क्रिप्ट

आप अब ब्रेकपॉइंट जोड़ सकते हैं जावास्क्रिप्ट कोड के बाईं ओर रेखा पर क्लिक करके आप ब्रेकपॉइंट को जोड़ना चाहते हैं:

ब्रेकप्वाइंट जोड़ना

जब आपका ब्रेकपॉइंट हिट होता है, तो यह नीचे की तरह दिखेगा:

एक ब्रेकपॉइंट मारा जा रहा है

आप वॉच चर भी जोड़ सकते हैं और आम तौर पर वे सब कुछ कर सकते हैं जो आप एक आधुनिक डीबगिंग टूल में चाहते हैं।

देखो चर

फायरबग में दिए गए विभिन्न विकल्पों के बारे में अधिक जानकारी के लिए, फायरबग एफएक्यू देखें

क्रोम

क्रोम में निर्मित जावास्क्रिप्ट डिबगिंग विकल्प भी अपना है, जो बहुत ही समान तरीके से, राइट क्लिक, निरीक्षण तत्व, आदि में काम करता है । Chrome डेवलपर टूल पर एक नज़र डालें । मुझे आमतौर पर फायरबग से बेहतर क्रोम में स्टैक के निशान मिलते हैं ।

इंटरनेट एक्स्प्लोरर

यदि आप .NET में विकसित हो रहे हैं और वेब डेवलपमेंट वातावरण का उपयोग करके विजुअल स्टूडियो का उपयोग कर रहे हैं, तो आप सीधे ब्रेकपॉइंट्स लगाकर जावास्क्रिप्ट कोड को डीबग कर सकते हैं, आदि आपका जावास्क्रिप्ट कोड बिल्कुल वैसा ही दिखता है जैसे आप अपने C # या VB.NET कोड को डीबग कर रहे थे ।

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


... आपके पास एक कॉपी-पेस्ट बफर में जाने के लिए तैयार होना चाहिए था, है ना? :)
क्रिस्चियन टेरनस


3
क्षमा करें, मैं पूरी तरह से चूक गया कि यह उसी व्यक्ति द्वारा पूछा और उत्तर दिया जा रहा था! मुझे लगता है कि आपके पास किसी तरह का जावास्क्रिप्ट डिबग कोपिपस्टा था जो आपने हर बार किसी से पूछा था।
क्रिश्चियन टेरनस

54
  • इंटरनेट एक्सप्लोरर 8 (डेवलपर टूल - F12)। इंटरनेट एक्सप्लोरर की भूमि में दूसरी चीज कुछ भी है
  • फ़ायरफ़ॉक्स और फायरबगF12प्रदर्शित करने के लिए मारो ।
  • सफ़ारी (मेन्यू बार दिखाएं, वरीयताएँ -> उन्नत -> मेन्यू बार दिखाएँ दिखाएँ )
  • Google Chrome जावास्क्रिप्ट कंसोल ( F12या ( Ctrl+ Shift+ J))। ज्यादातर वही ब्राउज़र है जो सफारी के रूप में है, लेकिन सफारी बेहतर IMHO है।
  • ओपेरा ( उपकरण -> उन्नत -> डेवलपर उपकरण )

+1 ओपेरा js डीबगर एक बेहतर त्रुटि संदेश देता है फिर बाकी सभी
गेब्रियल सोलोमन

3
हालाँकि 2009 में Safari ने 2014 में Chromes डेवलपर टूल को हटा दिया होगा, मैं सप्ताह के किसी भी दिन Chrome में डेब्यू करूँगा। क्रोम के डेवलपर टूल और फ़ायरफ़ॉक्स के फ़ायरबग शीर्ष पायदान हैं ... और हालांकि अभी भी उपयोग करने के लिए अजीब IE11 के देव उपकरण शायद 3 जगह ( IMHO ) में हैं
scunliffe

29

जावास्क्रिप्ट कोड को डीबग करने के लिए जावास्क्रिप्ट में एक डीबगर कीवर्ड होता है। डिबगर रखो ; आपके जावास्क्रिप्ट कोड में स्निपेट। यह स्वचालित रूप से उस बिंदु पर जावास्क्रिप्ट कोड डीबग करना शुरू कर देगा।

उदाहरण के लिए:

मान लीजिए कि यह आपकी test.js फ़ाइल है

function func(){
    //Some stuff
    debugger;  //Debugging is automatically started from here
    //Some stuff
}
func();
  • जब ब्राउज़र सक्षम डिबगर के साथ डेवलपर विकल्प में वेब पेज चलाता है, तो यह स्वचालित रूप से डीबगर से डीबग करना शुरू कर देता है; बिंदु।
  • ब्राउज़र को डेवलपर विंडो खोलनी चाहिए।

सफारी पर यह कभी-कभी काम करता है और कभी-कभी नहीं होता है। मुझे यकीन है कि यह मेरे अंत में कुछ बात है। FWIW मैंने JSContexts के लिए स्वचालित रूप से वेब इंस्पेक्टर को सक्षम किया है।
1.21 गीगावाट

21

मैं पुराने अच्छे printfदृष्टिकोण का उपयोग करता हूं (एक प्राचीन तकनीक जो किसी भी समय अच्छी तरह से काम करेगी)।

जादू देखें %o:

console.log("this is %o, event is %o, host is %s", this, e, location.host);

%oजेएस ऑब्जेक्ट की डंप क्लिक करने योग्य और गहरी-भूरे रंग की, सुंदर-मुद्रित सामग्री। %sसिर्फ एक रिकॉर्ड के लिए दिखाया गया था।

और इस:

console.log("%s", new Error().stack);

आपको जावा-जैसे स्टैक ट्रेस टू पॉइंट ऑफ new Error()इन्वोकेशन ( फाइल और लाइन नंबर के लिए पथ !!) सहित देता है।

दोनों %oऔर new Error().stackक्रोम और फ़ायरफ़ॉक्स में उपलब्ध है।

ऐसे शक्तिशाली साधनों से आप अनुमान लगाते हैं कि आपके जेएस में क्या गलत हो रहा है, डिबग आउटपुट डालें ( ifडेटा की मात्रा कम करने के लिए बयान में लपेटें मत भूलना ) और अपनी धारणा को सत्यापित करें। समस्या को ठीक करें या नई धारणा बनाएं या बिट समस्या के लिए अधिक डिबग आउटपुट डालें।

इसके अलावा स्टैक निशान के उपयोग के लिए:

console.trace();

कंसोल के रूप में कहते हैं

हैप्पी हैकिंग!


2
कंसोल। के लिए +1 (); बाकियों से अलग जवाब।
सौरभ पाटिल

12

फायरबग और IE डिबगर से शुरू करें।

हालांकि जावास्क्रिप्ट में डीबगर्स के साथ सावधान रहें। हर बार एक समय में वे पर्यावरण को प्रभावित करेंगे बस कुछ त्रुटियों के कारण जो आप डिबग करने की कोशिश कर रहे हैं।

उदाहरण:

इंटरनेट एक्सप्लोरर के लिए, यह आमतौर पर एक क्रमिक मंदी है और कुछ प्रकार की मेमोरी लीक प्रकार की डील है। आधे घंटे के बाद या तो मुझे पुनः आरंभ करने की आवश्यकता है। यह काफी नियमित लगता है।

फायरबग के लिए, यह शायद एक वर्ष से अधिक हो गया है इसलिए यह एक पुराना संस्करण हो सकता है। नतीजतन, मुझे बारीकियों की याद नहीं है, लेकिन मूल रूप से कोड सही ढंग से नहीं चल रहा था और थोड़ी देर के लिए इसे डीबग करने की कोशिश करने के बाद मैंने फायरबग को निष्क्रिय कर दिया और कोड ने ठीक काम किया।


9

यद्यपि alert(msg);उन "में काम करता है" मैं सिर्फ यह जानना चाहता हूं कि "परिदृश्यों पर क्या चल रहा है ... हर डेवलपर ने उस मामले का सामना किया है जहां आप एक (बहुत बड़े या अंतहीन) लूप में समाप्त होते हैं जिसे आप बाहर नहीं तोड़ सकते हैं।

मैं आपको विकास के दौरान सलाह दूंगा कि यदि आप एक बहुत ही इन-फेस डिबग विकल्प चाहते हैं, तो एक डीबग विकल्प का उपयोग करें जो आपको बाहर निकालने देता है। (PS ओपेरा, सफारी और क्रोम? सभी अपने मूल संवादों में यह उपलब्ध है)

//global flag
_debug = true;
function debug(msg){
  if(_debug){
    if(!confirm(msg + '\n\nPress Cancel to stop debugging.')){
      _debug = false;
    }
  }
}

के साथ आप ऊपर पॉपअप डिबगिंग की एक बड़ी पाश, जहां दबाने में अपने आप प्राप्त कर सकते हैं Enter/ Okआप प्रत्येक संदेश के माध्यम से पर जा सकते हैं, लेकिन दबाने Escape/ Cancelकी मदद से आप अच्छी तरह से बाहर तोड़।


6

मैं WebKit के डेवलपर मेनू / कंसोल (सफारी 4) का उपयोग करता हूं । यह फायरबग के लगभग समान है।

console.log()नया काला है - इससे कहीं बेहतर alert()


2
यदि आप सभी कोड पर कंसोल डालते हैं, तो उन्हें हटाने के लिए याद रखें क्योंकि यह IE को तोड़ देगा।
लियाम

5

मेरा पहला कदम हमेशा HTML को मान्य करना और JSLint के साथ वाक्यविन्यास की जांच करना है । यदि आपके पास क्लीन मार्कअप और मान्य जावास्क्रिप्ट कोड है तो यह फायरबग या किसी अन्य डीबगर का समय है।


@ केन लिंक टूटा :(
रामनाथन

@Tirisangu धन्यवाद! लिंक तय
केन

3

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


3

मैं कुछ टूल्स का इस्तेमाल करता हूं: फिडलर , फायरबग और विजुअल स्टूडियो। मैंने सुना है इंटरनेट एक्सप्लोरर 8 में एक अच्छा अंतर्निहित डिबगर है।


"फिडलर" से आपका मतलब है फिडलर वेब डिबगर?
थॉमस एल होलडे

3

जब तक Internet Explorer 8 बाहर नहीं आया, तब तक मैं Firebug का उपयोग करता था। मैं इंटरनेट एक्सप्लोरर का बहुत बड़ा प्रशंसक नहीं हूं, लेकिन अंतर्निहित डेवलपर टूल के साथ कुछ समय बिताने के बाद, जिसमें वास्तव में अच्छा डीबगर शामिल है, यह किसी और चीज का उपयोग करने के लिए व्यर्थ लगता है। मुझे अपनी टोपी माइक्रोसॉफ्ट को देनी होगी, उन्होंने इस टूल पर शानदार काम किया।


2
बुनियादी डिबगिंग के लिए, IE8 डिबगर ने मेरी अधिकांश आवश्यकताओं को अनुकूल बनाया है। हालाँकि, यदि आप किसी प्रकार का प्रदर्शन परीक्षण कर रहे हैं, तो आप जल्दी ही IE में कमी पाएंगे। मेरे पास हाल ही में एक परियोजना थी जो कुछ भारी जावास्क्रिप्ट का उपयोग करती थी, और हमें वास्तव में अवर सिस्टम के लिए चीजों को ट्रिम करने की आवश्यकता थी, जैसा कि हम खतरनाक "अनुत्तरदायी स्क्रिप्ट त्रुटि" में चल रहे थे। इस उदाहरण में फायरबग अमूल्य था, क्योंकि मैं यह पता लगाने में सक्षम था कि मेरे सभी समय कहाँ बिताए जा रहे हैं।
गैविन

1
IE8 डिबगर में एक प्रोफ़ाइल सुविधा भी होती है (यद्यपि फायरबग की तरह चित्रमय नहीं) जो प्रत्येक विधि पर खर्च किए गए कॉल ट्री, कॉल काउंट और समय प्रदान करती है। मैंने इसे अलग-थलग करने के लिए पर्याप्त पाया है जो जेएस कोड बहुत लंबा हो रहा है।
जेम्स

3

आप YUI लकड़हारा भी देख सकते हैं । आपको इसका उपयोग करने के लिए अपने HTML में टैग के एक जोड़े को शामिल करना होगा। यह फायरबग के लिए एक सहायक जोड़ है, जो कमोबेश जरूरी है।


क्या jQuery में समान कार्यक्षमता नहीं है?
18'09

2

मैंने पाया कि Internet Explorer 8 (प्रेस F12) का नया संस्करण जावास्क्रिप्ट कोड को डीबग करने के लिए बहुत अच्छा है।

यदि आप फ़ायरफ़ॉक्स का उपयोग करते हैं तो बेशक फायरबग अच्छा है।


2

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



2

फ़ायरबग और ब्राउज़र-देशी डेवलपर एक्सटेंशन के अलावा JetBrains WebStorm IDE फ़ायरफ़ॉक्स और क्रोम (एक्सटेंशन आवश्यक) के लिए दूरस्थ डीबग समर्थन के साथ आता है।

यह भी समर्थन करता है:

यह नि: शुल्क परीक्षण करने के लिए विकल्प 30 परीक्षण या एक प्रारंभिक एक्सेस संस्करण का उपयोग कर रहे हैं ।


2

यदि आप विज़ुअल स्टूडियो का उपयोग कर रहे हैं , तो debugger;उस कोड के ऊपर रखें जिसे आप डीबग करना चाहते हैं। निष्पादन के दौरान नियंत्रण उस स्थान पर रुक जाएगा, और आप वहां से कदम दर कदम डीबग कर सकते हैं।


1

अधिकांश उत्तरों के साथ, यह वास्तव में निर्भर करता है: आप अपने डिबगिंग के साथ क्या हासिल करना चाहते हैं? बुनियादी विकास, प्रदर्शन के मुद्दों को ठीक करना? बुनियादी विकास के लिए, पिछले सभी उत्तर पर्याप्त से अधिक हैं।

विशेष रूप से प्रदर्शन परीक्षण के लिए, मैं फायरबग की सलाह देता हूं। समय के संदर्भ में कौन सी विधियाँ सबसे अधिक महंगी हैं, यह प्रोफाइल करने में सक्षम है, जिन परियोजनाओं पर मैंने काम किया है, उनके लिए अमूल्य है। चूंकि क्लाइंट-साइड लाइब्रेरी अधिक मजबूत हो जाती हैं, और अधिक जिम्मेदारी क्लाइंट-साइड को सामान्य रूप से रखा जाता है, इस प्रकार की डिबगिंग और प्रोफाइलिंग केवल अधिक उपयोगी हो जाएगी।

फायरबग कंसोल एपीआई: http://getfirebug.com/console.html


0

F12वेब डेवलपर्स को दबाकर ब्राउज़र छोड़ने के बिना जावास्क्रिप्ट कोड को जल्दी से डीबग कर सकते हैं। यह विंडोज के हर इंस्टॉलेशन में बनाया गया है।

में इंटरनेट एक्सप्लोरर 11 , F12 उपकरण ऐसे breakpoints, घड़ी और स्थानीय चर देखने, और संदेशों और तत्काल कोड निष्पादन के लिए एक सांत्वना के रूप में उपकरण डिबगिंग प्रदान करता है।


कृपया इस लिंक को देखें: w3schools.com/js/js_debugging.asp भी
रेजा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.