debugging - उल्का: सर्वर पक्ष पर डीबग




meteor server-side (8)

क्या किसी को सर्वर साइड कोड डीबग करने के लिए एक अच्छी विधि पता है? मैंने Node.js डीबग को सक्षम करने का प्रयास किया, फिर नोड-इंस्पेक्टर का उपयोग करें लेकिन यह मेरा कोई भी कोड नहीं दिखाता है।

मैं console.log का उपयोग कर समाप्त होता हूं लेकिन यह बहुत अक्षम है।

अद्यतन: मुझे मेरी लिनक्स मशीन पर निम्नलिखित प्रक्रियाएं मिलती हैं:

  1. जब आप उल्का चलाते हैं, तो यह दो प्रक्रियाओं को जन्म देगा

    प्रक्रिया 1: / usr / lib / उल्का / बिन / नोड /usr/lib/meteor/app/meteor/meteor.js

    प्रक्रिया 2: / usr / lib / उल्का / बिन / नोड /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js - रखरखाव

  2. आपको प्रक्रिया 2 पर हत्या-यूएसआर 1 भेजने की जरूरत है

  3. नोड-इंस्पेक्टर चलाएं और आप अपना सर्वर कोड देख सकते हैं

मेरी पहली कोशिश पर, मैं / usr / lib / उल्का / बिन / उल्का में उल्का स्टार्टअप स्क्रिप्ट पर अंतिम पंक्ति को संशोधित करता हूं

exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "[email protected]"

और NODE_DEBUG=--debug meteor कमांड प्रॉम्प्ट पर NODE_DEBUG=--debug meteor । यह केवल प्रक्रिया 1 पर --debug ध्वज डालता है, इसलिए मुझे केवल नोड-इंस्पेक्टर पर उल्का फाइलें दिखाई देती हैं और मेरा कोड नहीं मिला।

क्या कोई इसे विंडोज और मैक मशीन पर देख सकता है?


उल्का 1.0.2 के रूप में शायद सर्वर-साइड डिबगिंग के लिए सबसे अच्छा तरीका सीधे नए अंतर्निर्मित खोल के माध्यम से होता है: चलने वाले सर्वर को meteor shell । यहां अधिक जानकारी: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell


उल्का 1.0.3.1 पर (सर्गेई सिमोनचिक उत्तर में अपडेट करें)

meteor run --debug-port=<port-number> साथ अपने सर्वर को शुरू करें meteor run --debug-port=<port-number>

प्वाइंट ब्राउजर को http://localhost:6222/debug?port=<port-number>

जहां <port-number> एक पोर्ट है जिसे आप निर्दिष्ट करते हैं।

अपने कोड में एक debugger; जोड़ें debugger; जहां आप अपना ब्रेक पॉइंट सेट करना चाहते हैं।

debugger; कहां पर निर्भर करता है debugger; आह्वान किया जाता है, यह या तो इंस्पेक्टर खोले जाने के साथ आपके क्लाइंट या सर्वर ब्राउज़र विंडो पर तोड़ देगा।


उल्का ऐप्स Node.js ऐप्स हैं। meteor [run] कमांड के साथ एक उल्का ऐप meteor [run] , आप डीबग मोड में node शुरू करने के लिए NODE_OPTIONS पर्यावरण चर कॉन्फ़िगर कर सकते हैं।

NODE_OPTIONS पर्यावरण परिवर्तनीय मानों के उदाहरण:

  • --debug
  • --debug=47977 - एक पोर्ट निर्दिष्ट करें
  • --debug-brk - पहले कथन पर तोड़ें
  • --debug-brk=5858 - पहले बयान पर पोर्ट निर्दिष्ट करें और ब्रेक करें

यदि आप export NODE_OPTIONS=--debug , तो उसी शेल से चलने वाले सभी meteor आदेश पर्यावरण चर का उत्तराधिकारी होंगे। वैकल्पिक रूप से, आप केवल एक रन के लिए डीबगिंग सक्षम कर सकते हैं, NODE_OPTIONS="--debug=47977" meteor

डीबग करने के लिए, node-inspector को एक अलग खोल में चलाएं, फिर http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS> , भले ही node-inspector आपको चलाने के लिए कहता है।


उल्का में 0.5.4 यह बहुत आसान हो गया है:

पहले टर्मिनल से निम्न आदेश चलाएं:

npm install -g node-inspector
node-inspector &
export NODE_OPTIONS='--debug-brk'
meteor

और फिर नोड-इंस्पेक्टर कंसोल देखने के लिए अपने ब्राउज़र में http://localhost:8080 खोलें।

अद्यतन करें

चूंकि उल्का 1.0 आप बस टाइप कर सकते हैं

meteor debug

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

अद्यतन करें

उल्का 1.0.2 में एक कंसोल या खोल जोड़ा गया है। यह आउटपुट वैरिएबल के लिए आसान हो सकता है और सर्वर पर कमांड चला सकता है:

meteor shell

डीबग मोड में node.js शुरू करने के लिए, मैंने इसे इस तरह से किया:

  1. खुला /usr/lib/meteor/app/meteor/run.js
  2. से पहले

    nodeOptions.push(path.join(options.bundlePath, 'main.js')); 
    

    जोड़ना

    nodeOptions.push('--debug');
    

डीबगर ग्रहण संलग्न करने के लिए यहां अतिरिक्त व्यावहारिक कदम दिए गए हैं:

  1. यहां '--debug' के बजाय '--debug-brk' का उपयोग करें, क्योंकि मेरे लिए eclipse का उपयोग डीबगर के रूप में node.js को संलग्न करना आसान है।
  2. 'डीबगर' जोड़ें उस कोड में जहां आप डीबग करना चाहते हैं। (मैं व्यक्तिगत रूप से इस तरह से पसंद करता हूं)
  3. कंसोल में उल्का चलाओ
  4. ग्रहण में node.js से संलग्न करें (वी 8 उपकरण, लोकलहोस्ट से संलग्न: 5858)
  5. दौड़ें, डीबगर को हिट करने की प्रतीक्षा करें

जब आप अपने उल्का ऐप फ़ोल्डर में उल्का शुरू करते हैं, तो आप देखेंगे कि " पोर्ट 5858 पर डीबगर सुनना " कंसोल में है।


मुझे यकीन नहीं है कि यह आपके लिए क्यों काम नहीं कर रहा था।
मैं कंसोल (मैक) पर चरणों का पालन करके इसका उपयोग करने में सक्षम हूं।

$ ps  
$ kill -s USR1 *meteor_node_process_id*  
$ node-inspector &

https://github.com/dannycoates/node-inspector पर ऊपर दिए गए चरणों का उल्लेख किया गया है। यह नोड प्रक्रिया को चलाने के लिए नोड-इंस्पेक्टर को जोड़ने के लिए है।


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

अधिक जानकारी और ठोस उपयोग निर्देशों के लिए https://github.com/broth-eu/meteor-inspector पर एक नज़र डालें।






server-side