2012-03-13 11 views
12

मैं कुछ कोड है कि बहुत ज्यादा http://nodejs.org/docs/v0.6.0/api/cluster.html पर क्लस्टर दस्तावेज में नमूना की तरह लग रहा है के साथ प्रक्रियाओं इंस्पेक्टर और मेरे आवेदन को डीबग करने के लिए https://github.com/joyent/node/wiki/Using-Eclipse-as-Node-Applications-Debugger पर विस्तृत और ग्रहण वी 8 प्लगइन का उपयोग करने का प्रयास किया, लेकिन ऐसा लगता है कि मैं रोचक सर्वर तर्क पर ब्रेकपॉइंट्स डालने के लिए फोर्क किए गए क्लस्टर इंस्टेंस पर डीबगर को हुक नहीं कर सकता - मैं केवल डीबग कर सकता हूं क्लस्टर प्रक्रियाओं को उत्पन्न करने वाले एप्लिकेशन का हिस्सा। क्या किसी को पता है कि मैं वास्तव में ऐसी चीज कर सकता हूं, या क्या मुझे डिबगिंग मोड में केवल एक ही थ्रेड का उपयोग करने के लिए अपने एप्लिकेशन को दोबारा करने की आवश्यकता है?डिबगिंग Node.js बुद्धि के लिए, cluster.fork()

मैं एक नोड.जेएस नौसिखिया हूं, इसलिए मुझे आशा है कि यहां कुछ स्पष्ट है जो मैं यहां याद कर रहा हूं।

उत्तर

3

मैं पहले से ही इस बारे में यहाँ एक टिकट खोला: https://github.com/dannycoates/node-inspector/issues/130

हालांकि यह अभी तक तय नहीं कर रहा है, वहाँ एक समाधान है:

FWIW: कारण मुझे लगता है कि नोड डिबगर डीबग पोर्ट के लिए बाध्य करने की जरूरत है (डिफ़ॉल्ट: 5858)। यदि आप क्लस्टर का उपयोग कर रहे हैं, तो मुझे लगता है कि मास्टर/कंट्रोलर पहले बांधता है, और सफल होता है, जिससे बच्चे/श्रमिकों में बाध्य हो जाता है। जबकि एक बंदरगाह को नोड --debug = N पर आपूर्ति की जा सकती है, ऐसा करने के लिए ऐसा कोई आसान तरीका नहीं है जब कार्यकर्ता के लिए क्लस्टर के भीतर नोड लगाया जाता है (प्रोग्रामिंग प्रक्रिया को प्रक्रिया.debug_port सेट करना संभव है और फिर डीबगिंग सक्षम करें, लेकिन मैं अभी तक काम नहीं मिला है)। जो विकल्पों का एक गुच्छा छोड़ देता है: 1) --debug विकल्प के बिना नोड शुरू करें, और एक बार यह चलने के बाद, उस कार्यकर्ता प्रक्रिया के लिए पिड ढूंढें जिसे आप डीबग/प्रोफाइल करना चाहते हैं, और इसे डीबगिंग सक्षम करने के लिए यूएसआर 1 सिग्नल भेजें। एक और विकल्प नोड के लिए एक रैपर लिखना है जो वास्तविक नोड बाइनरी को --debug प्रत्येक बार एक अद्वितीय बंदरगाह पर सेट करता है। क्लस्टर में संभवतः विकल्प हैं जो आपको तर्क जैसे पास भी देते हैं।

11
var fixedExecArgv=[]; 
fixedExecArgv.push('--debug-brk=5859'); 
cluster.setupMaster({ 
    execArgv: fixedExecArgv 
}); 

क्रेडिट Sergey's post पर जाता है।

मैंने अपने server.js को केवल एक कार्यकर्ता को फोर्क करने के लिए मुख्य रूप से परीक्षण करने के लिए बदल दिया, फिर फोर्किंग के ऊपर कोड जोड़ा। यह मेरे लिए डीबगिंग मुद्दा तय किया। समाधान की व्याख्या और प्रदान करने के लिए सर्गेई धन्यवाद !!!

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