2012-02-29 12 views
7

मैं बहुत तरह नोड ग्राहक डिबगर का उपयोग करें,:बाल प्रक्रिया पर Node.js कमांड लाइन डीबगर का उपयोग करें?

नोड डिबग myscript.js

लेकिन इस प्रक्रिया का उपयोग कर एक बच्चे spawns:

वर बच्चे = की आवश्यकता होती है ("child_process ")। फोर्क (सेमीडी, तर्क);

क्या इस बच्चे को "डीबग" मोड में भी शुरू करने का कोई तरीका है?

+0

शायद तुम myscript अंदर जांच कर सकते हैं मुख्य प्रक्रिया डिबग मोड में है, और फिर पारित '' args' से एक के रूप --debug'। – loganfsmyth

+0

और डीबगर पोर्ट को डिफ़ॉल्ट रूप से बदलने के लिए मत भूलना डिफ़ॉल्ट रूप से पहले से ही मूल प्रक्रिया डीबगर –

+0

के साथ व्यस्त है - फोर्क cmd या argdeug = 5859 (एक नया बंदरगाह) फोर्क cmd या args में त्रुटियों में परिणाम देता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि --debug नोड प्रक्रिया का एक विकल्प है, न कि प्रक्रिया को फोर्क किया जा रहा है। कोई अन्य विचार? – user836003

उत्तर

0

कोई समस्या नहीं है। आपको बस चलने की प्रक्रिया में डिबगिंग सिग भेजने की ज़रूरत है। नोड निरीक्षक डॉक्स को देखो एक मिल रहा है मैं आपको बता कैसे एक डिबग-brk करने के लिए नहीं कर सकते के लिए डिबग मोड

सक्षम करें, मुझे यकीन है कि आप कर सकते हैं नहीं कर रहा हूँ लेकिन आप हमेशा

की तरह कोड से कुछ कर सकते हैं जबकि (सत्य) {डीबगर}

तो आप डीबग कथन को मैन्युअल रूप से लूप से बाहर ले जा सकते हैं। गंदे मुझे पता है =)

3

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

var debug = process.execArgv.indexOf('--debug') !== -1; 
if(debug) { 
    //Set an unused port number. 
    process.execArgv.push('--debug=' + (5859)); 
} 
var child = require("child_process").fork(cmd, args); 

.... डिबगर पोर्ट पर ध्यान 5859

+0

मैंने इस पर संघर्ष किया क्योंकि मैंने बाल-प्रोसेस मॉड्यूल को एक स्थानीय वैरिएबल नामक प्रक्रिया में प्रभावित किया, नोड प्रक्रिया को वैश्विक चर छुपाया, इसलिए process.execArgv परिभाषित नहीं किया गया था। Beaware "प्रक्रिया" एक नोड वैश्विक चर है! –

-1

यहाँ एक और तरीका है, यह एक पर बच्चे को डीबग कर देगा नि: शुल्क बंदरगाह:

// Determine if in debug mode. 
// If so, pass in a debug-brk option manually, without specifying port. 
var startOpts = {}; 
var isInDebugMode = typeof v8debug === 'object'; 
if(isInDebugMode) { 
    startOpts = {execArgv: ['--debug-brk']}; 
} 
child_process.fork('./some_module.js', startArgs, startOpts); 
+0

क्षमा करें यह मेरे लिए काम नहीं करता है, मुझे लगता है कि आपको इसे अप्रयुक्त बंदरगाह पर सुनने के लिए स्पष्ट रूप से बताना होगा, जैसे execArgv.push ('- debug =' + (5303 + processId ++)); –

+0

@ डेविडफोर्नरॉन का जवाब अधिक सही है –

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