VS कोड में Node.js डिबगिंग
विजुअल स्टूडियो कोड संपादक में के लिए अंतर्निहित डिबगिंग समर्थन है Node.js रनटाइम और जावास्क्रिप्ट, टाइपस्क्रिप्ट, और कई अन्य भाषाओं को डिबग कर सकता है जिन्हें जावास्क्रिप्ट में स्थानांतरित किया गया है। Node.js डिबगिंग के लिए एक प्रोजेक्ट सेट करना आमतौर पर VS कोड के साथ सीधा होता है जो उपयुक्त लॉन्च कॉन्फ़िगरेशन डिफॉल्ट और स्निपेट प्रदान करता है।
ध्यान दें : यदि आप वीएस कोड के साथ अभी शुरुआत कर रहे हैं, तो आप सामान्य डिबगिंग सुविधाओं और बनाने के बारे में जान सकते हैं |_+_| कॉन्फ़िगरेशन फ़ाइलें में डिबगिंग विषय।
यह Node.js डिबगिंग दस्तावेज़ अधिक उन्नत डिबगिंग परिदृश्यों के लिए कॉन्फ़िगरेशन और सुविधाओं के बारे में अधिक विस्तार से बताता है। आपको डिबगिंग के लिए निर्देश मिलेगा स्रोत मानचित्र , बाहरी कोड पर कदम रखना , काम दूरस्थ डिबगिंग , और भी बहुत कुछ।
यदि आप एक परिचयात्मक वीडियो देखना चाहते हैं, तो Node.js डिबगिंग के साथ आरंभ करना देखें:
कॉन्फ़िगरेशन विशेषताएँ लॉन्च करें
डिबगिंग कॉन्फ़िगरेशन को |_+_| . में संग्रहीत किया जाता है आपके कार्यक्षेत्र में स्थित फ़ाइल |_+_| फ़ोल्डर। डिबगिंग कॉन्फ़िगरेशन फ़ाइलों के निर्माण और उपयोग में एक परिचय सामान्य है डिबगिंग विषय।
नीचे |_+_| . पर एक संदर्भ दिया गया है Node.js डीबगर के लिए विशिष्ट विशेषताएँ।
निम्नलिखित विशेषताएँ |_+_| . प्रकार के लॉन्च कॉन्फ़िगरेशन में समर्थित हैं और |_+_|:
-
|_+_| - डिबग प्रोटोकॉल का उपयोग करने के लिए। खंड देखें समर्थित नोड-जैसे रनटाइम ऊपर।
-
|_+_| - उपयोग करने के लिए डिबग पोर्ट। Node.js से अटैचमेंट और रिमोट डीबगिंग अनुभाग देखें।
-
|_+_| - डिबग पोर्ट का टीसीपी / आईपी पता। अनुभाग देखें Node.js . से अटैच करना तथा रिमोट डिबगिंग .
-
|_+_| - इसे |_+_| पर सेट करके स्रोत मानचित्र सक्षम करें। खंड देखें स्रोत मानचित्र .
-
|_+_| - उत्पन्न जावास्क्रिप्ट फ़ाइलों का पता लगाने के लिए ग्लोब पैटर्न की सरणी। खंड देखें स्रोत मानचित्र .
-
|_+_| - समाप्ति पर सत्र फिर से शुरू करें। खंड देखें डिबग सत्र को स्वचालित रूप से पुनरारंभ करना .
-
|_+_| - सत्र को फिर से शुरू करते समय, मिलीसेकंड की इस संख्या के बाद छोड़ दें। खंड देखें Node.js . से अटैच करना .
-
|_+_| - कार्यक्रम शुरू होने पर तुरंत ब्रेक लें।
-
|_+_| - वीएस कोड की रूट डायरेक्टरी। खंड देखें रिमोट डिबगिंग नीचे।
-
|_+_| - नोड की रूट डायरेक्टरी। खंड देखें रिमोट डिबगिंग नीचे।
प्रतिक्रिया-बूटस्ट्रैप कस्टम सीएसएस
-
|_+_|- कोड को स्वचालित रूप से स्थानांतरित करने का प्रयास करें जो स्रोत फ़ाइलों के लिए मैप नहीं करता है। खंड देखें स्मार्ट स्टेपिंग .
-
|_+_| - इन ग्लोब पैटर्न द्वारा कवर की गई फ़ाइलों को स्वचालित रूप से छोड़ दें। खंड देखें निर्बाध कोड छोड़ना .
-
|_+_| - डायग्नोस्टिक आउटपुट सक्षम करें।
ये विशेषताएँ केवल अनुरोध प्रकार के लॉन्च कॉन्फ़िगरेशन के लिए उपलब्ध हैं |_+_|:
- |_+_| - Node.js प्रोग्राम को डिबग करने का एक निरपेक्ष पथ।
- |_+_| - डिबग करने के लिए प्रोग्राम को दिए गए तर्क। यह विशेषता सरणी प्रकार की है और सरणी तत्वों के रूप में अलग-अलग तर्कों की अपेक्षा करती है।
- |_+_| - इस निर्देशिका में डीबग करने के लिए प्रोग्राम लॉन्च करें।
- |_+_| - उपयोग किए जाने वाले निष्पादन योग्य रनटाइम के लिए पूर्ण पथ। डिफ़ॉल्ट है |_+_|। खंड देखें 'एनपीएम' और अन्य टूल्स के लिए कॉन्फ़िगरेशन समर्थन लॉन्च करें .
- |_+_| - वैकल्पिक तर्क रनटाइम निष्पादन योग्य को पास किए गए।
- |_+_| - अगर एनवीएम (या एनवीएम-विंडो ) या एनवीएस Node.js संस्करणों के प्रबंधन के लिए उपयोग किया जाता है, इस विशेषता का उपयोग Node.js के एक विशिष्ट संस्करण का चयन करने के लिए किया जा सकता है। खंड देखें बहु संस्करण समर्थन नीचे।
- |_+_| - वैकल्पिक पर्यावरण चर। यह विशेषता पर्यावरण चर को स्ट्रिंग टाइप की गई कुंजी/मान जोड़े की सूची के रूप में अपेक्षित करती है।
- |_+_| - पर्यावरण चर परिभाषाओं वाली फ़ाइल का वैकल्पिक पथ। खंड देखें बाहरी फ़ाइल से पर्यावरण चर लोड करें नीचे।
- |_+_| - प्रोग्राम लॉन्च करने के लिए एक तरह का कंसोल (|_+_|, |_+_|, |_+_|)। खंड देखें नोड कंसोल नीचे।
- |_+_| - यदि |_+_| पर सेट किया जाता है, तो प्रक्रिया stdout/stderr से आउटपुट डीबग पोर्ट पर आउटपुट को सुनने के बजाय डीबग कंसोल में दिखाया जाएगा। यह प्रोग्राम या लॉग लाइब्रेरी के लिए उपयोगी है जो |_+_| का उपयोग करने के बजाय सीधे stdout/stderr स्ट्रीम में लिखते हैं। एपीआई।
- |_+_| - डिबगी के सभी उप-प्रक्रियाओं को ट्रैक करें और डिबग मोड में लॉन्च किए गए स्वचालित रूप से संलग्न करें। खंड देखें स्वचालित रूप से डिबगर को Node.js उप-प्रक्रियाओं में संलग्न करें नीचे।
यह विशेषता केवल अनुरोध प्रकार के लॉन्च कॉन्फ़िगरेशन के लिए उपलब्ध है |_+_|:
- |_+_| - डिबगर USR1 सिग्नल भेजने के बाद इस प्रक्रिया से जुड़ने की कोशिश करता है। इस सेटिंग के साथ, डीबगर पहले से चल रही प्रक्रिया से जुड़ सकता है जो डीबग मोड में प्रारंभ नहीं हुई थी। |_+_| . का उपयोग करते समय विशेषता डिबग पोर्ट स्वचालित रूप से Node.js संस्करण (और प्रयुक्त प्रोटोकॉल) के आधार पर निर्धारित किया जाता है और इसे स्पष्ट रूप से कॉन्फ़िगर नहीं किया जा सकता है। तो एक निर्दिष्ट न करें |_+_| गुण।
सामान्य परिदृश्यों के लिए कॉन्फ़िगरेशन लॉन्च करें
आप अपने |_+_| . में IntelliSense (|_+_|) को ट्रिगर कर सकते हैं आमतौर पर उपयोग किए जाने वाले Node.js डिबगिंग परिदृश्यों के लिए लॉन्च कॉन्फ़िगरेशन स्निपेट देखने के लिए फ़ाइल।
आप इसके साथ स्निपेट भी ला सकते हैं कॉन्फ़िगरेशन जोड़ें… |_+_| . के नीचे दाईं ओर स्थित बटन संपादक खिड़की।
यहां सभी स्निपेट की सूची दी गई है:
- लॉन्च कार्यक्रम : Node.js प्रोग्राम को डीबग मोड में लॉन्च करें।
- एनपीएम . के माध्यम से लॉन्च करें : एक npm 'डीबग' स्क्रिप्ट के माध्यम से एक Node.js प्रोग्राम लॉन्च करें। यदि आपने अपने package.json में एक npm डिबग स्क्रिप्ट परिभाषित की है, तो आप इसे सीधे अपने लॉन्च कॉन्फ़िगरेशन से उपयोग कर सकते हैं। सुनिश्चित करें कि npm स्क्रिप्ट में प्रयुक्त डिबग पोर्ट, स्निपेट में निर्दिष्ट पोर्ट से मेल खाता है।
- संलग्न करें : स्थानीय रूप से चल रहे Node.js प्रोग्राम के डिबग पोर्ट से अटैच करें। सुनिश्चित करें कि डिबग करने के लिए Node.js प्रोग्राम डिबग मोड में शुरू किया गया है और उपयोग किया गया डिबग पोर्ट वही है जो स्निपेट में निर्दिष्ट है।
- रिमोट प्रोग्राम से अटैच करें : |_+_| . द्वारा निर्दिष्ट होस्ट पर चल रहे Node.js प्रोग्राम के डिबग पोर्ट से अटैच करें गुण। सुनिश्चित करें कि डिबग करने के लिए Node.js प्रोग्राम डिबग मोड में शुरू किया गया है और उपयोग किया गया डिबग पोर्ट वही है जो स्निपेट में निर्दिष्ट है। अपने कार्यक्षेत्र और दूरस्थ होस्ट के फ़ाइल सिस्टम के बीच VS कोड मैपिंग स्रोत फ़ाइलों की सहायता के लिए, |_+_|और |_+_| के लिए सही पथ निर्दिष्ट करना सुनिश्चित करें। गुण।
- प्रक्रिया आईडी द्वारा संलग्न करें : डिबगिंग के लिए नोड या गल्प प्रक्रिया का चयन करने के लिए प्रोसेस पिकर खोलें। इस लॉन्च कॉन्फ़िगरेशन के साथ, आप एक नोड या गल्प प्रक्रिया से भी जुड़ सकते हैं जो डिबग मोड में शुरू नहीं हुई थी।
- नोडमॉन सेटअप : जब भी जावास्क्रिप्ट स्रोत बदल जाता है, तो डिबग सत्र को स्वचालित रूप से पुन: लॉन्च करने के लिए नोडमॉन का उपयोग करें। सुनिश्चित करें कि आपके पास विश्व स्तर पर नोडमॉन स्थापित है। कृपया ध्यान दें कि डिबग सत्र को समाप्त करना केवल प्रोग्राम को डिबग करने के लिए समाप्त करता है, न कि स्वयं नोडमोन। नोडमॉन को समाप्त करने के लिए |_+_| . दबाएं एकीकृत टर्मिनल में।
- मोचा टेस्ट : एक |_+_| . में मोचा परीक्षण डीबग करें आपकी परियोजना का फ़ोल्डर। सुनिश्चित करें कि आपके प्रोजेक्ट में 'मोचा' स्थापित है |_+_| फ़ोल्डर।
- योमन जनरेटर : एक योमन जनरेटर डीबग करें। स्निपेट आपको जनरेटर का नाम निर्दिष्ट करने के लिए कहता है। सुनिश्चित करें कि आपके प्रोजेक्ट में 'यो' स्थापित है |_+_| फ़ोल्डर और यह कि आपका जनरेट किया गया प्रोजेक्ट |_+_| . चलाकर डिबगिंग के लिए स्थापित किया गया है प्रोजेक्ट फ़ोल्डर में।
- गल्प टास्क : एक घूंट कार्य डीबग करें। सुनिश्चित करें कि आपके प्रोजेक्ट में 'गल्प' स्थापित है |_+_| फ़ोल्डर।
- इलेक्ट्रॉन मुख्य : इलेक्ट्रॉन अनुप्रयोग की मुख्य Node.js प्रक्रिया को डीबग करें। स्निपेट मानता है कि इलेक्ट्रॉन निष्पादन योग्य |_+_| . के अंदर स्थापित किया गया है कार्यक्षेत्र की निर्देशिका।
नोड कंसोल
डिफ़ॉल्ट रूप से, Node.js डिबग सत्र आंतरिक VS कोड डीबग कंसोल में लक्ष्य लॉन्च करते हैं। चूंकि डीबग कंसोल उन प्रोग्रामों का समर्थन नहीं करता है जिन्हें कंसोल से इनपुट पढ़ने की आवश्यकता होती है, आप या तो बाहरी टर्मिनल को सक्षम कर सकते हैं या |_+_| को सेट करके वीएस कोड एकीकृत टर्मिनल का उपयोग कर सकते हैं। आपके लॉन्च कॉन्फ़िगरेशन में विशेषता |_+_| या |_+_| क्रमश। डिफ़ॉल्ट है |_+_|।
यदि किसी बाहरी टर्मिनल का उपयोग किया जाता है, तो आप |_+_|, |_+_|, और |_+_| समायोजन।
'एनपीएम' और अन्य टूल्स के लिए कॉन्फ़िगरेशन समर्थन लॉन्च करें
Node.js प्रोग्राम को सीधे नोड के साथ लॉन्च करने के बजाय, आप लॉन्च कॉन्फ़िगरेशन से सीधे 'npm' स्क्रिप्ट या अन्य टास्क रनर टूल का उपयोग कर सकते हैं:
- पथ पर उपलब्ध कोई भी कार्यक्रम (उदाहरण के लिए 'एनपीएम', 'मोचा', 'गल्प' आदि) का उपयोग |_+_| के लिए किया जा सकता है। विशेषता और तर्कों को |_+_| के माध्यम से पारित किया जा सकता है।
- आपको |_+_| . सेट करने की आवश्यकता नहीं है विशेषताएँ यदि आपकी npm स्क्रिप्ट या अन्य उपकरण प्रोग्राम को लॉन्च करने के लिए स्पष्ट रूप से निर्दिष्ट करता है।
- यदि आप |_+_| . के माध्यम से डिबग पोर्ट निर्दिष्ट करते हैं विशेषता, वीएस कोड स्वचालित रूप से नहीं जोड़ेगा |_+_| विशेषता क्योंकि डिबग पोर्ट आमतौर पर npm स्क्रिप्ट या अन्य टूल द्वारा भी निर्दिष्ट किया जाता है।
आइए एक 'एनपीएम' उदाहरण देखें। अगर आपका |_+_| एक 'डीबग' स्क्रिप्ट है, उदाहरण के लिए:
launch.json
संबंधित लॉन्च कॉन्फ़िगरेशन इस तरह दिखेगा:
launch.json
बहु संस्करण समर्थन
यदि आप 'का उपयोग कर रहे हैं एनवीएम ' (या ' एनवीएम-विंडो ') अपने Node.js संस्करणों को प्रबंधित करने के लिए, एक |_+_| . निर्दिष्ट करना संभव है Node.js के विशिष्ट संस्करण को चुनने के लिए लॉन्च कॉन्फ़िगरेशन में विशेषता:
.vscode
यदि आप 'का उपयोग कर रहे हैं एनवीएस ' अपने Node.js संस्करणों को प्रबंधित करने के लिए, इसका उपयोग करना संभव है |_+_| Node.js के एक विशिष्ट संस्करण का चयन करने के लिए विशेषता:
launch.json
उन Node.js संस्करणों को स्थापित करना सुनिश्चित करें जिन्हें आप |_+_| . के साथ उपयोग करना चाहते हैं विशेषता के रूप में सुविधा संस्करण को डाउनलोड और इंस्टॉल नहीं करेगी। तो आपको कुछ इस तरह चलाना होगा |_+_| या |_+_| यदि आप जोड़ने की योजना बना रहे हैं तो एकीकृत टर्मिनल से |_+_| आपके लॉन्च कॉन्फ़िगरेशन के लिए।
ध्यान दें: यदि वीएस कोड पता लगाता है कि एनवीएस स्थापित है, तो यह करता है नहीं यदि कोई विशिष्ट Node.js संस्करण nvs में नहीं मिल पाता है, तो nvm पर वापस आएँ। एक ही समय में nvs और nvm दोनों का उपयोग करना समर्थित नहीं है।
बाहरी फ़ाइल से पर्यावरण चर लोड करें (नोड)
वीएस कोड नोड डीबगर फ़ाइल से पर्यावरण चर लोड करने और उन्हें नोड.जेएस रनटाइम में पास करने का समर्थन करता है। इस सुविधा का उपयोग करने के लिए, एक विशेषता जोड़ें |_+_| अपने लॉन्च कॉन्फ़िगरेशन में और पर्यावरण चर वाली फ़ाइल के लिए पूर्ण पथ निर्दिष्ट करें:
launch
|_+_| . में निर्दिष्ट कोई भी पर्यावरण चर शब्दकोश फ़ाइल से लोड किए गए चर को ओवरराइड करेगा।
यहाँ एक |_+_| . का एक उदाहरण दिया गया है फ़ाइल:
attach
Node.js . से अटैच करना
यदि आप VS कोड डीबगर को Node.js प्रोग्राम से जोड़ना चाहते हैं, तो VS कोड के एकीकृत टर्मिनल में Node.js को निम्नानुसार लॉन्च करें:
protocol
या यदि प्रोग्राम चलना शुरू नहीं होना चाहिए, लेकिन डीबगर के संलग्न होने की प्रतीक्षा करनी चाहिए:
port
अब आपके पास अपने प्रोग्राम में डीबगर संलग्न करने के लिए तीन विकल्प हैं:
- वीएस कोड स्वचालित रूप से प्रोग्राम से जुड़ा हुआ है, या
- एक प्रक्रिया पिकर खोलें जो सभी संभावित उम्मीदवार प्रक्रियाओं को सूचीबद्ध करता है और आपको एक चुनने देता है, या
- एक अटैच कॉन्फ़िगरेशन बनाएं जो स्पष्ट रूप से सभी कॉन्फ़िगरेशन विकल्पों को निर्दिष्ट करता है और फिर दबाएं F5 .
आइए इन विकल्पों के बारे में विस्तार से जानते हैं:
ऑटो अटैच फीचर
अगर ऑटो अटैच सुविधा सक्षम है, तो नोड डीबगर स्वचालित रूप से Node.js प्रक्रियाओं से जुड़ जाता है जिसे VS कोड के एकीकृत टर्मिनल से डीबग मोड में लॉन्च किया गया है।
सुविधा को सक्षम करने के लिए, या तो उपयोग करें ऑटो अटैच टॉगल करें क्रिया या, यदि नोड डीबगर पहले से सक्रिय है, तो इसका उपयोग करें ऑटो अटैच स्टेटस बार आइटम।
सक्षम करने के बाद ऑटो अटैच डीबगर को एक सेकंड के भीतर आपके प्रोग्राम से जुड़ना चाहिए:
कोई प्रक्रिया डिबग मोड में है या नहीं, यह प्रोग्राम तर्कों का विश्लेषण करके निर्धारित किया जाता है। वर्तमान में, हम पैटर्न का पता लगाते हैं |_+_|, |_+_|, |_+_|, |_+_|, |_+_|, |_+_| (सभी वैकल्पिक रूप से एक '=' और एक पोर्ट नंबर के बाद)।
ध्यान दें: यह सुविधा (अभी तक) टर्मिनल मल्टीप्लेक्सर्स के लिए काम नहीं करती है जैसे tmux (जहां शुरू की गई प्रक्रियाएं वीएस कोड के एकीकृत टर्मिनल के बच्चे नहीं हैं)।
नोड प्रक्रिया क्रिया में संलग्न करें
NS नोड प्रक्रिया में संलग्न करें action एक त्वरित चयन मेनू खोलता है जो Node.js डीबगर के लिए उपलब्ध सभी संभावित प्रक्रियाओं को सूचीबद्ध करता है:
पिकर में सूचीबद्ध व्यक्तिगत प्रक्रियाएं प्रक्रिया आईडी के अलावा डिबग पोर्ट और पता लगाया गया प्रोटोकॉल दिखाती हैं। आपको उस सूची में अपनी Node.js प्रक्रिया ढूंढनी चाहिए और इसे चुनने के बाद, Node.js डीबगर इसे संलग्न करने का प्रयास करता है।
Node.js प्रक्रियाओं के अलावा, पिकर अन्य प्रोग्राम भी दिखाता है जो |_+_| के विभिन्न रूपों में से एक के साथ लॉन्च किए गए थे। या |_+_| तर्क। यह इलेक्ट्रॉन या वीएस कोड की सहायक प्रक्रियाओं से जुड़ना संभव बनाता है।
अटैच कॉन्फ़िगरेशन सेट करना
इस विकल्प के लिए अधिक काम करने की आवश्यकता है लेकिन पिछले दो विकल्पों के विपरीत यह आपको विभिन्न डिबग कॉन्फ़िगरेशन विकल्पों को स्पष्ट रूप से कॉन्फ़िगर करने की अनुमति देता है।
सबसे सरल अटैचमेंट कॉन्फ़िगरेशन इस तरह दिखता है:
address
बंदरगाह |_+_| |_+_| . का डिफ़ॉल्ट डिबग पोर्ट है और |_+_| विकल्प। किसी भिन्न पोर्ट का उपयोग करने के लिए (उदाहरण के लिए |_+_|), इसे इस तरह के विकल्पों में जोड़ें: |_+_| और |_+_| और बदलें |_+_| तदनुसार लॉन्च कॉन्फ़िगरेशन में विशेषता।
यदि आप किसी Node.js प्रक्रिया से संलग्न करना चाहते हैं जो डीबग मोड में शुरू नहीं हुई है, तो आप Node.js प्रक्रिया की प्रक्रिया आईडी को एक स्ट्रिंग के रूप में निर्दिष्ट करके ऐसा कर सकते हैं:
sourceMaps
चूंकि प्रक्रिया आईडी को बार-बार ढूंढना और इसे लॉन्च कॉन्फ़िगरेशन में दर्ज करना थोड़ा श्रमसाध्य है, नोड डीबग एक कमांड चर का समर्थन करता है |_+_| जो प्रक्रिया पिकर (ऊपर से) से जुड़ता है और जो आपको Node.js प्रक्रियाओं की सूची से प्रक्रिया को आसानी से चुनने देता है।
|_+_| . का उपयोग करके चर लॉन्च कॉन्फ़िगरेशन इस तरह दिखता है:
true
डिबगिंग बंद करो
का उपयोग करते हुए डीबग: रोकें क्रिया (डीबग टूलबार में या के माध्यम से उपलब्ध है कमांड पैलेट ) डिबग सत्र को रोकता है।
यदि डिबग सत्र अटैच मोड में शुरू किया गया था (और डीबग टूलबार में लाल टर्मिनेट बटन एक सुपरइम्पोज़्ड प्लग दिखाता है), विराम Node.js डिबगर को डिबगी से डिस्कनेक्ट करता है जो तब निष्पादन जारी रखता है।
यदि डिबग सत्र लॉन्च मोड में है, तो दबाएं विराम निम्नलिखित करता है:
-
दबाते समय विराम पहली बार, डिबगी से एक |_+_| . भेजकर इनायत से शटडाउन करने का अनुरोध किया गया है संकेत। डिबगी इस सिग्नल को इंटरसेप्ट करने और आवश्यकतानुसार कुछ भी साफ करने और फिर बंद करने के लिए स्वतंत्र है। यदि उस शटडाउन कोड में कोई ब्रेकप्वाइंट (या समस्याएं) नहीं हैं, तो डिबगी और डिबग सत्र समाप्त हो जाएगा।
-
हालाँकि यदि डिबगर शटडाउन कोड में एक ब्रेकपॉइंट हिट करता है या यदि डिबगी अपने आप ठीक से समाप्त नहीं होता है, तो डिबग सत्र समाप्त नहीं होगा। इस मामले में, दबाने विराम फिर से डिबगी और उसकी चाइल्ड प्रक्रियाओं को समाप्त करने के लिए बाध्य करेगा (|_+_|)।
इसलिए यदि आप देखते हैं कि जब आप लाल बटन दबाते हैं तो डिबग सत्र समाप्त नहीं होता है विराम बटन, फिर डिबगी को शटडाउन करने के लिए फिर से बटन दबाएं।
ध्यान दें कि विंडोज ऑपरेटिंग सिस्टम पर, दबाकर विराम हमेशा डिबगी और उसके बच्चे की प्रक्रियाओं को जबरन मारता है।
स्रोत मानचित्र
VS कोड का Node.js डिबगर जावास्क्रिप्ट स्रोत मानचित्रों का समर्थन करता है जो ट्रांसपिल्ड भाषाओं के डिबगिंग में मदद करता है, उदाहरण के लिए, टाइपस्क्रिप्ट या मिनिफाइड/यूग्लीफाइड जावास्क्रिप्ट। स्रोत मानचित्रों के साथ, मूल स्रोत में सिंगल स्टेप थ्रू या ब्रेकपॉइंट सेट करना संभव है। यदि मूल स्रोत के लिए कोई स्रोत मानचित्र मौजूद नहीं है या यदि स्रोत मानचित्र टूटा हुआ है और स्रोत और उत्पन्न जावास्क्रिप्ट के बीच सफलतापूर्वक मैप नहीं कर सकता है, तो ब्रेकप्वाइंट असत्यापित (ग्रे खोखले सर्कल) के रूप में दिखाई देते हैं।
स्रोत मानचित्र दो प्रकार की इनलाइनिंग के साथ उत्पन्न किए जा सकते हैं:
- इनलाइन स्रोत मानचित्र : जेनरेट की गई जावास्क्रिप्ट फ़ाइल में अंत में डेटा यूआरआई के रूप में स्रोत मानचित्र होता है (फ़ाइल यूआरआई के माध्यम से स्रोत मानचित्र को संदर्भित करने के बजाय)।
- इनलाइन स्रोत : स्रोत मानचित्र में मूल स्रोत होता है (स्रोत को पथ के माध्यम से संदर्भित करने के बजाय)।
वीएस कोड दोनों का समर्थन करता है इनलाइन स्रोत मानचित्र और यह इनलाइन स्रोत .
स्रोत मानचित्र सुविधा |_+_| . द्वारा नियंत्रित होती है विशेषता जो |_+_| के लिए डिफ़ॉल्ट है। इसका अर्थ है कि नोड डीबगिंग हमेशा स्रोत मानचित्रों का उपयोग करने का प्रयास करता है (यदि यह कोई भी ढूंढ सकता है) और परिणामस्वरूप, आप |_+_| के साथ एक स्रोत फ़ाइल (उदाहरण के लिए, app.ts) भी निर्दिष्ट कर सकते हैं। गुण।
यदि आपको किसी कारण से स्रोत मानचित्रों को अक्षम करने की आवश्यकता है, तो आप |_+_| विशेषता |_+_|.
यदि जेनरेट की गई (ट्रांसपिल्ड) जावास्क्रिप्ट फाइलें उनके स्रोत के बगल में नहीं बल्कि एक अलग निर्देशिका में रहती हैं, तो आपको वीएस कोड डीबगर को |_+_| गुण। जेनरेट की गई जावास्क्रिप्ट फाइलों के सेट से फाइलों को शामिल करने और बाहर करने के लिए यह विशेषता कई ग्लोब पैटर्न लेती है। जब भी आप मूल स्रोत में ब्रेकप्वाइंट सेट करते हैं, तो वीएस कोड |_+_| द्वारा निर्दिष्ट फाइलों में जेनरेट किए गए जावास्क्रिप्ट कोड को खोजने का प्रयास करता है।
चूंकि स्रोत मानचित्र स्वचालित रूप से नहीं बनाए जाते हैं, इसलिए आपको उस ट्रांसपिलर को कॉन्फ़िगर करना होगा जिसका उपयोग आप उन्हें बनाने के लिए कर रहे हैं। टाइपस्क्रिप्ट के लिए यह निम्नलिखित तरीके से किया जा सकता है:
outFiles
यह टाइपस्क्रिप्ट प्रोग्राम के लिए संगत लॉन्च कॉन्फ़िगरेशन है:
restart
स्मार्ट स्टेपिंग
|_+_| . के साथ विशेषता सेट |_+_| लॉन्च कॉन्फ़िगरेशन में, वीएस कोड डीबगर में कोड के माध्यम से कदम उठाने पर स्वचालित रूप से 'अरुचिकर कोड' छोड़ देगा। 'अरुचिकर कोड' एक ऐसा कोड है जो एक ट्रांसपिलिंग प्रक्रिया द्वारा उत्पन्न होता है लेकिन स्रोत मानचित्र द्वारा कवर नहीं किया जाता है, इसलिए यह मूल स्रोत पर वापस मैप नहीं करता है। डीबगर में स्रोत कोड के माध्यम से कदम रखते समय यह कोड आपके रास्ते में आता है क्योंकि यह मूल स्रोत कोड और जेनरेट कोड के बीच डीबगर स्विच करता है जिसमें आप वास्तव में रूचि नहीं रखते हैं। |_+_| स्रोत मानचित्र द्वारा कवर नहीं किए गए कोड के माध्यम से स्वचालित रूप से कदम उठाएगा जब तक कि यह किसी स्रोत मानचित्र द्वारा कवर किए गए स्थान तक नहीं पहुंच जाता।
यह टाइपस्क्रिप्ट में एसिंक/वेट डाउनकंपिलेशन जैसे मामलों के लिए विशेष रूप से उपयोगी है, जहां कंपाइलर सहायक कोड को इंजेक्ट करता है जो स्रोत मानचित्र द्वारा कवर नहीं किया जाता है।
कृपया ध्यान दें कि |_+_| सुविधा केवल जावास्क्रिप्ट कोड पर लागू होती है जो स्रोत से उत्पन्न हुई थी और इसलिए इसमें एक स्रोत मानचित्र है। स्रोतों के बिना जावास्क्रिप्ट के लिए, स्मार्ट स्टेपिंग विकल्प का कोई प्रभाव नहीं पड़ता है।
जावास्क्रिप्ट स्रोत मानचित्र युक्तियाँ
स्रोत मानचित्रों के साथ डिबगिंग करते समय एक सामान्य समस्या यह है कि आप एक ब्रेकपॉइंट सेट करेंगे, और यह ग्रे हो जाएगा। यदि आप उस पर कर्सर घुमाते हैं, तो आपको संदेश दिखाई देगा, |_+_|। अब क्या? ऐसे कई मुद्दे हैं जो इसका कारण बन सकते हैं। सबसे पहले, नोड डीबग एडेप्टर स्रोत मानचित्रों को कैसे संभालता है, इसकी एक त्वरित व्याख्या।
जब आप |_+_| में एक ब्रेकप्वाइंट सेट करते हैं, तो डिबग एडेप्टर को आपकी टाइपस्क्रिप्ट फ़ाइल के ट्रांसपिल्ड संस्करण |_+_| के पथ का पता लगाना होता है, जो वास्तव में Node. लेकिन, |_+_| . से शुरू करके इसका पता लगाने का कोई सीधा तरीका नहीं है फ़ाइल। इसके बजाय, डिबग एडेप्टर |_+_| . का उपयोग करता है |_+_| . में विशेषता सभी ट्रांसपाइल को खोजने के लिए |_+_| फ़ाइलें, और उन्हें एक स्रोत मानचित्र के लिए पार्स करता है, जिसमें इसके संबद्ध के स्थान शामिल हैं |_+_| फ़ाइलें।
जब आप अपना |_+_| . बनाते हैं स्रोत मानचित्रों के साथ टाइपस्क्रिप्ट में फ़ाइल सक्षम है, यह या तो एक |_+_| . उत्पन्न करता है फ़ाइल, या स्रोत मानचित्र को |_+_| के नीचे एक टिप्पणी में बेस64-एन्कोडेड स्ट्रिंग के रूप में रेखांकित किया गया है फ़ाइल। खोजने के लिए |_+_| इस मानचित्र से संबद्ध फ़ाइलें, डीबग एडेप्टर स्रोत मानचित्र में दो गुणों को देखता है, |_+_|, और |_+_|। |_+_| वैकल्पिक है - यदि मौजूद है, तो यह प्रत्येक पथ के लिए |_+_| में जोड़ा जाता है, जो पथों की एक सरणी है। परिणाम |_+_| . के लिए निरपेक्ष या सापेक्ष पथों की एक सरणी है फ़ाइलें। स्रोत मानचित्र के सापेक्ष सापेक्ष पथ हल किए जाते हैं।
अंत में, डिबग एडेप्टर |_+_| . के पूर्ण पथ की खोज करता है इस परिणामी सूची में |_+_| फ़ाइलें। यदि कोई मेल है, तो उसे मानचित्रण करते समय उपयोग करने के लिए स्रोत मानचित्र फ़ाइल मिल गई है |_+_| से |_+_|. यदि कोई मेल नहीं है, तो यह ब्रेकपॉइंट को बांध नहीं सकता है, और यह ग्रे हो जाएगा।
जब आपके ब्रेकप्वाइंट धूसर हो जाते हैं, तो कोशिश करने के लिए यहां कुछ चीजें दी गई हैं:
- क्या आपके पास |_+_| आपके में |_+_|?
- क्या आपने स्रोत मानचित्र सक्षम के साथ निर्माण किया था? वहाँ हैं |_+_| फ़ाइलें, या इनलाइन स्रोत मानचित्र आपके |_+_| फ़ाइलें?
- क्या आपने |_+_| आपकी संपत्ति में |_+_|? यह एक निरपेक्ष पथ के लिए एक ग्लोब पैटर्न होना चाहिए जो आपके |_+_| . से मेल खाता हो फ़ाइलें।
- 'इंस्पेक्टर' प्रोटोकॉल कार्यान्वयन का प्रयास करें। यह कुछ अधिक जटिल स्रोत मानचित्र मामलों को संभाल सकता है।
- हैं |_+_| और |_+_| आपके स्रोत मानचित्र में गुण सही हैं? क्या उन्हें सही रास्ता पाने के लिए जोड़ा जा सकता है |_+_| फ़ाइल?
- क्या आप वेबपैक का उपयोग कर रहे हैं? डिफ़ॉल्ट रूप से, यह एक |_+_| . के साथ पथ आउटपुट करता है उपसर्ग, जिसे डीबग एडेप्टर हल नहीं कर सकता है। आप इसे अपने वेबपैक कॉन्फ़िगरेशन में |_+_| . के साथ बदल सकते हैं विकल्प, या 'इंस्पेक्टर' प्रोटोकॉल का उपयोग करने का प्रयास करें, जो इन पथों को हल करने के लिए कुछ अतिरिक्त विकल्प प्रदान करता है।
- क्या आपने वीएस कोड में गलत केस वाला फोल्डर खोला है? फ़ोल्डर खोलना संभव है |_+_| कमांड लाइन से |_+_| जिस स्थिति में स्रोत मानचित्रों को सही ढंग से हल नहीं किया जा सकता है।
- स्टैक ओवरफ़्लो पर या गिटहब पर कोई समस्या दर्ज करके अपने विशेष सेटअप के साथ सहायता खोजने का प्रयास करें।
- जोड़ने का प्रयास करें |_+_| बयान। अगर यह |_+_| . में टूट जाता है वहाँ फ़ाइल करें, लेकिन उस स्थान पर विराम बिंदु बंधते नहीं हैं, जो कि GitHub समस्या के साथ शामिल करने के लिए उपयोगी जानकारी है।
रिमोट डिबगिंग
Node.js डीबगर Node.js >= 4.x के संस्करणों के लिए दूरस्थ डीबगिंग का समर्थन करता है। |_+_| . के माध्यम से दूरस्थ होस्ट निर्दिष्ट करें गुण। यहाँ एक उदाहरण है:
timeout
डिफ़ॉल्ट रूप से, VS कोड डीबग किए गए स्रोत को दूरस्थ Node.js फ़ोल्डर से स्थानीय VS कोड में स्ट्रीम करेगा और इसे केवल-पढ़ने के लिए संपादक में दिखाएगा। आप इस कोड के माध्यम से कदम उठा सकते हैं, लेकिन इसे संशोधित नहीं कर सकते। यदि आप चाहते हैं कि VS कोड आपके कार्यक्षेत्र से संपादन योग्य स्रोत खोले, तो आप दूरस्थ और स्थानीय स्थानों के बीच मैपिंग सेट कर सकते हैं। ए |_+_| और एक |_+_| विशेषता का उपयोग स्थानीय वीएस कोड प्रोजेक्ट और (रिमोट) नोड.जेएस फ़ोल्डर के बीच पथ को मैप करने के लिए किया जा सकता है। यह स्थानीय रूप से एक ही सिस्टम पर या विभिन्न ऑपरेटिंग सिस्टम पर भी काम करता है। जब भी किसी कोड पथ को दूरस्थ Node.js फ़ोल्डर से स्थानीय VS कोड पथ में बदलने की आवश्यकता होती है, तो |_+_| पथ को पथ से हटा दिया जाता है और |_+_| द्वारा प्रतिस्थापित किया जाता है। रिवर्स रूपांतरण के लिए |_+_| पथ को |_+_| द्वारा प्रतिस्थापित किया जाता है।
stopOnEntry
दूरस्थ डिबगिंग के अक्सर उपयोग किए जाने वाले दो अनुप्रयोग हैं:
- एक डोकर कंटेनर में Node.js डिबगिंग:
यदि आप Node.js को a . के अंदर चला रहे हैं डाक में काम करनेवाला मज़दूर कंटेनर, आप डॉकटर कंटेनर के अंदर Node.js को डीबग करने के लिए ऊपर से दृष्टिकोण का उपयोग कर सकते हैं और अपने कार्यक्षेत्र में फ़ाइलों के लिए दूरस्थ स्रोत को वापस मैप कर सकते हैं। हमने एक रेसिपी बनाई है GitHub यह आपको बताता है कि इसे कैसे सेट अप करें टाइपस्क्रिप्ट के साथ डोकर में Node.js .
- Linux (WSL) के लिए Windows सबसिस्टम में Node.js डीबग करना:
यदि आप में Node.js चलाना चाहते हैं लिनक्स के लिए विंडोज सबसिस्टम (डब्ल्यूएसएल), आप ऊपर से भी दृष्टिकोण का उपयोग कर सकते हैं। हालांकि, इसे और भी आसान बनाने के लिए, हमने एक |_+_| . पेश किया है फ्लैग स्वचालित रूप से सब कुछ कॉन्फ़िगर करने के लिए ताकि Node.js Linux सबसिस्टम में चले और स्रोत आपके कार्यक्षेत्र में फ़ाइलों के लिए मैप किया जाए।
यहाँ डिबगिंग के लिए सबसे सरल डिबग कॉन्फ़िगरेशन है |_+_| डब्ल्यूएसएल में:
localRoot
कृपया ध्यान दें : के आगमन के साथ रिमोट - WSL विस्तार, वीएस कोड के लिए सार्वभौमिक समर्थन मिला लिनक्स के लिए विंडोज सबसिस्टम (डब्ल्यूएसएल)। नतीजतन, |_+_| डिबग कॉन्फ़िगरेशन विशेषता को हटा दिया गया है और इसके लिए समर्थन जल्द ही छोड़ दिया जाएगा। अधिक जानकारी के लिए, कृपया हमारे देखें WSL . में विकास दस्तावेज़ीकरण।
एक्सेस लोडेड स्क्रिप्ट
यदि आपको ऐसी स्क्रिप्ट में ब्रेकपॉइंट सेट करने की आवश्यकता है जो आपके कार्यक्षेत्र का हिस्सा नहीं है और इसलिए सामान्य वीएस कोड फ़ाइल ब्राउज़िंग के माध्यम से आसानी से स्थित और खोला नहीं जा सकता है, तो आप लोड की गई स्क्रिप्ट तक पहुंच सकते हैं लोडेड स्क्रिप्ट डीबग व्यूलेट में देखें:
वैकल्पिक रूप से, आप का उपयोग कर सकते हैं डीबग: लोड की गई स्क्रिप्ट खोलें क्रिया (|_+_|) जो एक त्वरित पिक खोलता है, जहां आप फ़िल्टर कर सकते हैं और खोलने के लिए स्क्रिप्ट का चयन कर सकते हैं।
लिपियों को केवल-पढ़ने के लिए संपादक में लोड किया जाता है जहां आप ब्रेकप्वाइंट सेट कर सकते हैं। ये ब्रेकप्वाइंट डिबग सत्रों में याद किए जाते हैं लेकिन डिबग सत्र चलने के दौरान आपके पास केवल स्क्रिप्ट सामग्री तक पहुंच होती है।
स्रोत संपादित होने पर स्वचालित रूप से डीबग सत्र पुनरारंभ करना
|_+_| लॉन्च कॉन्फ़िगरेशन की विशेषता नियंत्रित करती है कि डीबग सत्र समाप्त होने के बाद Node.js डीबगर स्वचालित रूप से पुनरारंभ होता है या नहीं। यदि आप उपयोग करते हैं तो यह सुविधा उपयोगी है नोडमोन फ़ाइल परिवर्तन पर Node.js को पुनरारंभ करने के लिए। लॉन्च कॉन्फ़िगरेशन विशेषता सेट करना |_+_| से |_+_| Node.js के समाप्त होने के बाद, नोड डीबगर स्वचालित रूप से Node.js को फिर से जोड़ने का प्रयास करता है।
अगर आपने अपना कार्यक्रम शुरू कर दिया है |_+_| के जरिए नोडमोन इस तरह कमांड लाइन पर:
remoteRoot
आप निम्न लॉन्च कॉन्फ़िगरेशन के साथ इसमें वीएस कोड डीबगर संलग्न कर सकते हैं:
smartStep
वैकल्पिक रूप से आप अपना कार्यक्रम शुरू कर सकते हैं |_+_| के जरिए नोडमोन सीधे लॉन्च कॉन्फ़िगरेशन के साथ और वीएस कोड डीबगर संलग्न करें:
skipFiles
युक्ति: दबाने विराम बटन डिबग सत्र को रोकता है और Node.js से डिस्कनेक्ट करता है, लेकिन नोडमोन (और Node.js) चलते रहेंगे। रोक लेना नोडमोन , आपको इसे कमांड लाइन से मारना होगा (जो कि ऊपर दिखाए गए अनुसार |_+_| का उपयोग करने पर आसानी से संभव है)।
युक्ति: वाक्यविन्यास त्रुटियों के मामले में, नोडमोन त्रुटि ठीक होने तक Node.js को सफलतापूर्वक प्रारंभ करने में सक्षम नहीं होगा। इस मामले में, वीएस कोड Node.js से जुड़ने की कोशिश करना जारी रखेगा लेकिन अंततः (10 सेकंड के बाद) छोड़ देगा। इससे बचने के लिए आप |_+_| . जोड़कर टाइमआउट बढ़ा सकते हैं एक बड़े मान के साथ विशेषता (मिलीसेकंड में)।
स्वचालित रूप से डिबगर को Node.js उप-प्रक्रियाओं में संलग्न करें
नोड डीबगर में एक तंत्र होता है जो डिबगी के सभी उपप्रक्रियाओं को ट्रैक करता है और उन प्रक्रियाओं से स्वचालित रूप से संलग्न करने का प्रयास करता है जो डीबग मोड में लॉन्च की जाती हैं। यह सुविधा उन प्रोग्रामों की डिबगिंग को सरल बनाती है जो Node.js को फोर्क या स्पॉन करते हैं, जैसे कि क्लस्टर नोड मॉड्यूल पर आधारित प्रोग्राम:
लॉन्च कॉन्फ़िगरेशन विशेषता सेट करके सुविधा को सक्षम किया गया है |_+_| सच करने के लिए:
trace
युक्ति: उप-प्रक्रियाओं को ट्रैक करने में सक्षम होने के लिए, हमें माता-पिता की प्रक्रिया आईडी की आवश्यकता होती है। इसके लिए हमें आवश्यक है कि लॉन्च कॉन्फ़िगरेशन से लॉन्च किया गया मुख्य डिबगी एक Node.js प्रक्रिया है और हम इसकी प्रक्रिया आईडी खोजने के लिए एक मूल्यांकन का उपयोग करते हैं।
युक्ति: कोई प्रक्रिया डिबग मोड में है या नहीं, इसका अनुमान प्रोग्राम तर्कों का विश्लेषण करके लगाया जाता है। वर्तमान में हम पैटर्न का पता लगाते हैं |_+_|, |_+_|, |_+_|, |_+_|, |_+_|, |_+_| (सभी वैकल्पिक रूप से एक |_+_| और एक पोर्ट नंबर के बाद)।
पुनरारंभ फ्रेम (नोड)
नोड डीबगर स्टैक फ्रेम पर निष्पादन को पुनरारंभ करने का समर्थन करता है। यह उन स्थितियों में उपयोगी हो सकता है जहां आपको अपने स्रोत कोड में कोई समस्या मिली है और आप संशोधित इनपुट मानों के साथ कोड के एक छोटे से हिस्से को फिर से चलाना चाहते हैं। पूर्ण डिबग सत्र को रोकना और फिर से शुरू करना बहुत समय लेने वाला हो सकता है। NS फ़्रेम को पुनरारंभ करें आपके द्वारा चर बदलने के बाद क्रिया आपको वर्तमान फ़ंक्शन को फिर से दर्ज करने की अनुमति देती है मूल्य ते करना कार्य:
मेल/एओएल/कॉम
ध्यान दें कि फ़्रेम को पुनरारंभ करें किसी भी राज्य परिवर्तन को अनियंत्रित नहीं करेगा, इसलिए यह हमेशा अपेक्षा के अनुरूप काम नहीं कर सकता है।
Node.js संस्करण>= 5.11 का उपयोग करना सुनिश्चित करें क्योंकि पुराने संस्करण सभी स्थितियों में काम नहीं करते हैं।
ब्रेकप्वाइंट
फंक्शन ब्रेकप्वाइंट
Node.js डीबगर केवल फ़ंक्शन ब्रेकप्वाइंट का समर्थन करता है जब लीगेसी प्रोटोकॉल का उपयोग किया जाता है (जो कि Node.js को लक्षित करते समय होता है)<8.0 versions). In addition, be aware of the following limitations when using function breakpoints:
- फ़ंक्शन ब्रेकप्वाइंट केवल वैश्विक, गैर-देशी कार्यों के लिए काम करते हैं।
- फ़ंक्शन ब्रेकप्वाइंट केवल तभी बनाए जा सकते हैं जब फ़ंक्शन को परिभाषित किया गया हो (और डीबगर द्वारा देखा गया हो)।
ब्रेकप्वाइंट हिट मायने रखता है
'हिट काउंट कंडीशन' यह नियंत्रित करती है कि निष्पादन को 'ब्रेक' करने से पहले कितनी बार ब्रेकपॉइंट को हिट करने की आवश्यकता है। Node.js डीबगर द्वारा समर्थित हिट काउंट सिंटैक्स या तो एक पूर्णांक है या ऑपरेटरों में से एक है |_+_|, |_+_|, |_+_|, |_+_|, |_+_|, |_+_| एक पूर्णांक के बाद।
कुछ उदाहरण:
- |_+_| हमेशा 10 हिट के बाद ब्रेक
- |_+_| केवल पहले दो हिट पर ब्रेक
- |_+_| |_+_| . के समान
- |_+_| हर दूसरे हिट पर ब्रेक
ब्रेकप्वाइंट सत्यापन
प्रदर्शन कारणों से, Node.js पहली पहुंच पर जावास्क्रिप्ट फ़ाइलों के अंदर कार्यों को आलसी रूप से पार्स करता है। परिणामस्वरूप, ब्रेकप्वाइंट स्रोत कोड क्षेत्रों में काम नहीं करते हैं जिन्हें Node.js द्वारा नहीं देखा (पार्स) किया गया है।
चूंकि यह व्यवहार डिबगिंग के लिए आदर्श नहीं है, वीएस कोड |_+_| . पास करता है Node.js के लिए विकल्प स्वचालित रूप से। यह विलंबित पार्सिंग को रोकता है और यह सुनिश्चित करता है कि कोड चलाने से पहले ब्रेकप्वाइंट को मान्य किया जा सकता है (इसलिए वे अब कूदते नहीं हैं)।
चूंकि |_+_| विकल्प डिबग लक्ष्य के स्टार्ट-अप समय को महत्वपूर्ण रूप से बढ़ा सकता है, आप एक |_+_| . पास करके आसानी से ऑप्ट आउट कर सकते हैं एक के रूप में |_+_| गुण।
ऐसा करते समय, आप पाएंगे कि आपके कुछ ब्रेकप्वाइंट अनुरोधित लाइन से चिपके नहीं हैं, बल्कि पहले से पार्स किए गए कोड में अगली संभावित लाइन के लिए कूदते हैं। भ्रम से बचने के लिए, वीएस कोड हमेशा उस स्थान पर ब्रेकपॉइंट दिखाता है जहां नोड.जेएस सोचता है कि ब्रेकपॉइंट है। में ब्रेकप्वाइंट अनुभाग में, इन विराम बिंदुओं को अनुरोधित और वास्तविक रेखा संख्या के बीच एक तीर के साथ दिखाया गया है:
यह ब्रेकपॉइंट सत्यापन तब होता है जब कोई सत्र शुरू होता है और ब्रेकपॉइंट नोड.जेएस के साथ पंजीकृत होते हैं, या जब कोई सत्र पहले से चल रहा होता है और एक नया ब्रेकपॉइंट सेट होता है। इस स्थिति में, विराम बिंदु किसी भिन्न स्थान पर जा सकता है। Node.js द्वारा सभी कोड को पार्स करने के बाद (उदाहरण के लिए, इसके माध्यम से चलाकर), ब्रेकप्वाइंट को अनुरोधित स्थानों पर आसानी से फिर से लागू किया जा सकता है पुन: लागू में बटन ब्रेकप्वाइंट अनुभाग शीर्षलेख। यह ब्रेकप्वाइंट को अनुरोधित स्थान पर वापस कूदना चाहिए।
निर्बाध कोड छोड़ना (नोड, क्रोम)
VS कोड Node.js डिबगिंग में स्रोत कोड से बचने के लिए एक सुविधा है जिसे आप आगे नहीं बढ़ाना चाहते (AKA 'जस्ट माई कोड')। इस सुविधा को |_+_| . के साथ सक्षम किया जा सकता है आपके लॉन्च कॉन्फ़िगरेशन में विशेषता। |_+_| स्क्रिप्ट पथों को छोड़ने के लिए ग्लोब पैटर्न की एक सरणी है।
उदाहरण के लिए, का उपयोग करना:
launch
|_+_| . में सभी कोड और |_+_| आपके प्रोजेक्ट में फ़ोल्डर्स छोड़ दिए जाएंगे।
में निर्मित अंतर्भाग मापदंड Node.js को 'जादुई नाम' से संदर्भित किया जा सकता है |_+_| एक ग्लोब पैटर्न में। निम्न उदाहरण सभी आंतरिक मॉड्यूल को छोड़ देता है:
program
सटीक 'लंघन' नियम इस प्रकार हैं:
- यदि आप किसी स्किप की गई फ़ाइल में कदम रखते हैं, तो आप वहाँ नहीं रुकेंगे - आप अगली निष्पादित लाइन पर रुकेंगे जो स्किप की गई फ़ाइल में नहीं है।
- यदि आपने फेंके गए अपवादों को तोड़ने का विकल्प सेट किया है, तो आप छोड़ी गई फ़ाइलों से फेंके गए अपवादों को नहीं तोड़ेंगे।
- यदि आप किसी स्किप की गई फ़ाइल में ब्रेकपॉइंट सेट करते हैं, तो आप उस ब्रेकपॉइंट पर रुक जाएंगे, और जब तक आप इससे बाहर नहीं निकलेंगे, तब तक आप इसके माध्यम से आगे बढ़ पाएंगे, जिस बिंदु पर सामान्य लंघन व्यवहार फिर से शुरू हो जाएगा।
कॉल स्टैक दृश्य में छोड़े गए स्रोत को 'मंद' शैली में दिखाया गया है:
मंद प्रविष्टियों पर होवर करना बताता है कि स्टैक फ़्रेम मंद क्यों है।
कॉल स्टैक पर एक संदर्भ मेनू आइटम, इस फ़ाइल को छोड़कर टॉगल करें आपको किसी फ़ाइल को अपने लॉन्च कॉन्फिगर में जोड़े बिना उसे रनटाइम पर आसानी से छोड़ने में सक्षम बनाता है। यह विकल्प केवल वर्तमान डिबगिंग सत्र के लिए बना रहता है। आप इसका उपयोग |_+_| . द्वारा छोड़ी गई फ़ाइल को स्किप करने से रोकने के लिए भी कर सकते हैं आपके लॉन्च कॉन्फ़िगरेशन में विकल्प।
ध्यान दें: |_+_| प्रोटोकॉल डीबगर नकारात्मक ग्लोब पैटर्न का समर्थन करता है, लेकिन उन्हें अवश्य का पालन करें एक सकारात्मक पैटर्न: सकारात्मक पैटर्न छोड़ी गई फाइलों के सेट में जुड़ जाते हैं, जबकि नकारात्मक पैटर्न उस सेट से घट जाते हैं।
निम्नलिखित (|_+_| केवल-प्रोटोकॉल) उदाहरण में एक 'गणित' मॉड्यूल को छोड़कर सभी को छोड़ दिया जाता है:
args
ध्यान दें: |_+_| प्रोटोकॉल डीबगर को |_+_| . का अनुकरण करना होता है विशेषता क्योंकि V8 डीबगर प्रोटोकॉल मूल रूप से इसका समर्थन नहीं करता है। इसके परिणामस्वरूप धीमी गति से चलने वाला प्रदर्शन हो सकता है।
समर्थित नोड-जैसे रनटाइम
चूंकि VS कोड Node.js डिबगर Node.js रनटाइम के माध्यम से संचार करता है तार प्रोटोकॉल , समर्थित रनटाइम का सेट वायर प्रोटोकॉल का समर्थन करने वाले सभी रनटाइम द्वारा निर्धारित किया जाता है।
आज दो तार प्रोटोकॉल मौजूद हैं:
- विरासत : मूल V8 डीबगर प्रोटोकॉल , जो वर्तमान में पुराने रनटाइम द्वारा समर्थित है।
- निरीक्षक : नई V8 इंस्पेक्टर प्रोटोकॉल |_+_| . के माध्यम से उजागर किया जाता है Node.js संस्करणों में ध्वज> = 6.3। यह लीगेसी प्रोटोकॉल की अधिकांश सीमाओं और मापनीयता के मुद्दों को संबोधित करता है।
वर्तमान में ये प्रोटोकॉल निम्नलिखित रनटाइम की विशिष्ट संस्करण श्रेणियों द्वारा समर्थित हैं:
यद्यपि यह संभव प्रतीत होता है कि वीएस कोड नोड.जेएस डीबगर हमेशा स्वचालित रूप से सर्वश्रेष्ठ प्रोटोकॉल चुनता है, हमने एक स्पष्ट लॉन्च कॉन्फ़िगरेशन विशेषता के साथ 'निराशावादी दृष्टिकोण' के लिए निर्णय लिया है |_+_| और निम्नलिखित मान:
-
cwd
: लक्षित रनटाइम द्वारा उपयोग किए जाने वाले प्रोटोकॉल का स्वचालित रूप से पता लगाने का प्रयास करता है। अनुरोध प्रकार के विन्यास के लिए |_+_| और यदि नहीं |_+_| निर्दिष्ट किया गया है, हम एक |_+_| . के साथ PATH से नोड चलाकर संस्करण निर्धारित करने का प्रयास करते हैं तर्क। यदि नोड संस्करण>= 8.0 है, तो नए 'इंस्पेक्टर' प्रोटोकॉल का उपयोग किया जाता है। अनुरोध प्रकार 'संलग्न' के विन्यास के लिए, हम नए प्रोटोकॉल से जुड़ने का प्रयास करते हैं और यदि यह काम करता है, तो हम 'निरीक्षक' प्रोटोकॉल का उपयोग करते हैं। हम पुराने संस्करणों में गंभीर समस्याओं के कारण केवल संस्करणों>= 6.9 के लिए नए 'इंस्पेक्टर' प्रोटोकॉल पर स्विच करते हैं। -
runtimeExecutable
: नोड डीबगर को 'इंस्पेक्टर' प्रोटोकॉल-आधारित कार्यान्वयन का उपयोग करने के लिए बाध्य करता है। यह नोड संस्करण>= 6.3 और इलेक्ट्रॉन संस्करण>= 1.7.4 द्वारा समर्थित है। -
node
: नोड डीबगर को 'विरासत' प्रोटोकॉल-आधारित कार्यान्वयन का उपयोग करने के लिए बाध्य करता है। यह नोड संस्करणों द्वारा समर्थित है
वीएस कोड १.११ से शुरू, |_+_| . के लिए डिफ़ॉल्ट मान विशेषता है |_+_|।
यदि आपका रनटाइम दोनों प्रोटोकॉल का समर्थन करता है, तो यहां |_+_| . का उपयोग करने के कुछ अतिरिक्त कारण दिए गए हैं प्रोटोकॉल खत्म |_+_|:
- बहुत बड़ी जावास्क्रिप्ट वस्तुओं को डीबग करते समय यह अधिक स्थिर हो सकता है। क्लाइंट और सर्वर के बीच बड़े मान भेजते समय लीगेसी प्रोटोकॉल दर्दनाक रूप से धीमा हो सकता है।
- यदि आप अपने ऐप में ES6 प्रॉक्सी का उपयोग कर रहे हैं, तो आप |_+_| के माध्यम से डीबग किए जाने पर नोड v7+ रनटाइम को क्रैश होने से रोक सकते हैं। मसविदा बनाना। इस मुद्दे को ट्रैक किया गया है माइक्रोसॉफ्ट / बनामकोड # 12749 .
- |_+_| . के माध्यम से डिबगिंग प्रोटोकॉल कुछ पेचीदा स्रोत मानचित्र सेटअप को संभाल सकता है। यदि आपको स्रोत मैप की गई फ़ाइलों में ब्रेकप्वाइंट सेट करने में समस्या हो रही है, तो |_+_| का उपयोग करके देखें।
हम दोनों प्रोटोकॉल कार्यान्वयन के बीच फीचर समानता रखने की कोशिश करते हैं लेकिन यह और अधिक कठिन हो जाता है क्योंकि अंतर्निहित तकनीक |_+_| पदावनत है जबकि नया |_+_| जल्दी विकसित होता है। इस कारण से, हम समर्थित प्रोटोकॉल निर्दिष्ट करते हैं यदि कोई सुविधा दोनों द्वारा समर्थित नहीं है |_+_| और |_+_|.
#nodejs #vscode #webdev #javascript