2013-02-11 24 views
6

मेरे पास नोड के लिए लिखी गई एक स्क्रिप्ट है। जेएस जो डेटा का भार एकत्र करता है, इसे संसाधित करता है, बचाता है और फिर खत्म करता है। दुर्भाग्य से मैंने ऐसा कुछ किया है जो स्क्रिप्ट को खत्म करने और बंद करने से रोक रहा है, बल्कि यह खुला रहता है।डीबग नोड, यह क्या चल रहा है?

मैं शायद अपने द्वारा किए गए परिवर्तनों के माध्यम से बस अपना रास्ता काम करूंगा और इसे ट्रैक करने का प्रयास करूंगा, लेकिन ... क्या नोड डीबग करने और कोड/ईवेंट/कॉलबैक/कनेक्शन या पता लगाने का कोई आसान तरीका है या जो भी हो, वह इंतजार कर रहा है?

मैंने नोड-इंस्पेक्टर पर एक नज़र डाली है लेकिन मुझे यह पता नहीं लगा कि इसे खोलने के लिए कुछ भी ट्रैक कैसे किया जाए। कोई सलाह?

+0

लॉगेंट्री के लिए ठीक से बंद नहीं होने के लिए एक मॉड्यूल होने के लिए प्रतीत होता है। इसे उत्तर के रूप में चिह्नित नहीं किया है क्योंकि यह पता लगाने के लिए अभी भी उपयोगी होगा कि नोड किस चीज के लिए इंतजार कर रहा है। –

उत्तर

5

आप wtfnode का उपयोग करके अपना node.js प्रोग्राम चला सकते हैं या पहली पंक्ति या अपने प्रोग्राम पर require('wtfnode').init(); जोड़ सकते हैं। इसके बाद प्रक्रिया को मारने के लिए ctrl + c दबाए जाने पर यह नोड को खोलने वाली सभी चीजों की सूची मुद्रित करेगा।

3

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

मुझे लगता है कि आप lsof -p <PID> का उपयोग कर सकते हैं और देख सकते हैं कि क्या कहता है। मैं वहां mongodb और amqp दोनों देख सकते हैं।

0

बिंदु है जहां आप इसे बंद करने की उम्मीद पर

console.log(process._getActiveHandles()); 

जोड़ने तुम भी एक हैंडलर

process.on('SIGINT',() => console.log(process._getActiveHandles())); 

तो अगर नोड सही ढंग से बंद नहीं होती है, Ctrl + C आपको बता देंगे क्यों जोड़ सकते हैं।

+0

बीटीडब्ल्यू इस जवाब को जोड़ रहा है क्योंकि इस तथ्य के कारण wftnode मेरे लिए काम नहीं करता है क्योंकि यह बाहर निकलने वाले हैंडलरों को चलने से रोकता है। तकनीक के लिए myndzi के लिए kudos। यदि आपके पास बाहर निकलने वाले हैंडलर नहीं हैं तो मैं wtfnode को पुनः प्रतिक्रिया दूंगा। – teknopaul

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