使用cluster.fork()调试Node.js进程
我有一些代码非常类似于.6.0/api/cluster.html的群集文档中的示例,例如:
var cluster = require('cluster');
var server = require('./mycustomserver');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
var i;
// Master process
for (i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('death', function (worker) {
console.log('Worker ' + worker.pid + ' died');
});
} else {
// Worker process
server.createServer({port: 80}, function(err, result) {
if (err) {
throw err;
} else {
console.log('Thread listening on port ' + result.port);
}
});
}
我已经安装了node-inspector,并尝试使用它和 V8插件来调试我的应用程序,但是看起来我无法将调试器连接到派生的集群实例上,以在其中放置断点。有趣的服务器逻辑-我只能调试产生集群进程的应用程序部分。有人知道我是否真的可以做这样的事情,还是在调试模式下必须重构我的应用程序以仅使用单个线程?
我是Node.js新手,所以我希望这里缺少明显的东西。
回答如下:var fixedExecArgv=[];
fixedExecArgv.push('--debug-brk=5859');
cluster.setupMaster({
execArgv: fixedExecArgv
});
贷方转到Sergey's post。
我将我的server.js
更改为仅派生一名工人来进行测试,然后在分叉上方添加了代码。这为我解决了调试问题。感谢谢尔盖(Sergey)解释和提供解决方案!!!>
使用cluster.fork()调试Node.js进程
我有一些代码非常类似于.6.0/api/cluster.html的群集文档中的示例,例如:
var cluster = require('cluster');
var server = require('./mycustomserver');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
var i;
// Master process
for (i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('death', function (worker) {
console.log('Worker ' + worker.pid + ' died');
});
} else {
// Worker process
server.createServer({port: 80}, function(err, result) {
if (err) {
throw err;
} else {
console.log('Thread listening on port ' + result.port);
}
});
}
我已经安装了node-inspector,并尝试使用它和 V8插件来调试我的应用程序,但是看起来我无法将调试器连接到派生的集群实例上,以在其中放置断点。有趣的服务器逻辑-我只能调试产生集群进程的应用程序部分。有人知道我是否真的可以做这样的事情,还是在调试模式下必须重构我的应用程序以仅使用单个线程?
我是Node.js新手,所以我希望这里缺少明显的东西。
回答如下:var fixedExecArgv=[];
fixedExecArgv.push('--debug-brk=5859');
cluster.setupMaster({
execArgv: fixedExecArgv
});
贷方转到Sergey's post。
我将我的server.js
更改为仅派生一名工人来进行测试,然后在分叉上方添加了代码。这为我解决了调试问题。感谢谢尔盖(Sergey)解释和提供解决方案!!!>