दिलचस्प पोस्ट

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

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

वेब के समाधान से एकत्रित समाधान "मैं अपना जावास्क्रिप्ट कोड डिबग कैसे कर सकता हूं?"

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

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

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

फ़ायरफ़ॉक्स

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

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

सबसे पहले अगर आप किसी भी तत्व पर क्लिक करते हैं तो आप फायरबग के साथ एलीमेंट का निरीक्षण कर सकते हैं:

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

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

फायरबग फलक

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

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

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

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

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

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

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

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

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

Varibables देखें

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

क्रोम

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

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

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

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

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

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

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

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

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

मैं पुरानी अच्छी 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(); 

जैसा कंसोल कहता है

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

फायरबग और आईई डिबगर के साथ शुरू करें

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

उदाहरण:

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

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

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

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

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

उपरोक्त के साथ आप पॉपअप डीबगिंग के बड़े लूप में अपना स्वयं प्राप्त कर सकते हैं, जहां दबाना / ओके आपको प्रत्येक संदेश के माध्यम से कूदने देता है, लेकिन एस्केप / रद्द करने से आपको अच्छी तरह से बाहर तोड़ने देता है

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

console.log() नया काला है – alert() से बेहतर alert()

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

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

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

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

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

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

बेशक, अगर आप फ़ायरफ़ॉक्स का इस्तेमाल करते हैं, तो फायरबग अच्छा है।

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

मैं वेंकमेन का उपयोग कर रहा हूं, एक्सयूएल के अनुप्रयोगों के लिए जावास्क्रिप्ट डीबगर।

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

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

  • coffscript: webstorm 6 स्रोत नक्शे के साथ node.js में coffeescript डीबग कैसे करें
  • Node.js

यह मुफ्त में जांच करने के लिए विकल्प हैं 30 परीक्षण या प्रारंभिक एक्सेस संस्करण का उपयोग कर।

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

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

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

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

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

इंटरनेट एक्सप्लोरर 11 में , F12 टूल्स डिबगिंग टूल्स प्रदान करता है जैसे ब्रेकपॉइंट्स, वॉच और लोकल वैरिएबल देखने, और कंसोल और संदेश और तत्काल कोड निष्पादन।