在子进程上使用Node.js命令行调试器?

时间:2012-02-29 21:59:25

标签: debugging node.js

我使用Node客户端调试器,如下所示:

  

节点调试myscript.js

但是这个过程会产生一个孩子:

  

var child = require(" child_process")。fork(cmd,args);

这个孩子有没有办法在" debug"模式?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

不是问题。您需要做的就是将调试Sig发送到正在运行的进程。查看node-inspector docs查找启用调试模式

我不能告诉你如何做一个debug-brk,我不确定你能做什么,但你可以随时从代码中做一些事情

while(true){debugger}

因此你可以捕获调试语句然后手动退出循环。肮脏我知道=)

答案 2 :(得分:-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);