当前位置: 首页 > 面试题库 >

如何调试Node.JS子派生进程?

杨凌
2023-03-14
问题内容

我正在尝试调试使用以下方法创建的子Node.JS进程:

var child = require('child_process');
child .fork(__dirname + '/task.js');

问题是,在IntelliJ / WebStorm中运行时,父进程和子进程都在同一端口上启动。

debugger listening on port 40893
debugger listening on port 40893

因此,它仅调试父进程。

有什么方法可以设置IntelliJ来调试子进程或强制其在其他端口上启动,以便我可以在远程调试中进行连接?


问题答案:

这是node.js中一个已知的错误,该错误最近已得到修复(尽管未反向移植到v0.10)。

有关更多详细信息,请参见此问题:https :
//github.com/joyent/node/issues/5318

有一种解决方法,您可以更改每个工作进程的命令行,尽管并不是要以此方式使用API​​(该解决方法将来可能会停止工作)。这是来自github问题的源代码

var cluster = require('cluster');
var http = require('http');

if (cluster.isMaster) {
  var debug = process.execArgv.indexOf('--debug') !== -1;
  cluster.setupMaster({
    execArgv: process.execArgv.filter(function(s) { return s !== '--debug' })
  });
  for (var i = 0; i < 2; ++i) {
    if (debug) cluster.settings.execArgv.push('--debug=' + (5859 + i));
    cluster.fork();
    if (debug) cluster.settings.execArgv.pop();
  }
}
else {
  var server = http.createServer(function(req, res) {
    res.end('OK');
  });
  server.listen(8000);
}


 类似资料:
  • 问题内容: 这似乎是一个基本问题,但是我找不到任何文档: 分叉和生成node.js进程有什么区别?我已经读过分叉是生成的一种特殊情况,但是使用它们的不同用例/重用分别是什么? 问题答案: Spawn是用于运行系统命令的命令。运行spawn时,会向其发送系统命令,该命令将在其自己的进程上运行,但不会在节点进程内执行任何其他代码。您可以为生成的进程添加侦听器,以允许您的代码与生成的进程进行交互,但是不

  • 作者注:很多关于这个错误的问题促使我把这个问题贴出来,以备将来参考。 相关问题: 对节点_ENV=production使用spawn函数 节点。jschild_进程。spawn Enoint错误-仅在supervisord下 产卵节点。js错误 https://stackoverflow.com/questions/27603713/nodejs-spawn-enoent-error-on-tra

  • 问题内容: 我有一个派生许多子进程的服务器进程。服务器进程与CPU核心具有关联性,但我不希望该关联性由子进程继承(而是OS应该处理在何处运行这些进程)。有没有办法针对cpu亲和力取消父子进程的链接? 问题答案: 您可以在和之后使用CPU掩码中设置的所有位进行调用。

  • #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; pid = fork(); if (pid < 0) { exit(1); } else if (pid > 0) { exit

  • 问题内容: 当我得到以下错误: 我可以按照什么程序来修复它? 作者注意 :许多与此错误有关的问题鼓励我发布此问题以供将来参考。 问题答案: 使用NODE_DEBUG = child_process,向@ karl-richter积分。 简单,快速,2019年10月 用包装纸装饰,@ @ jiaji-zhou。 简单,快捷,2015年1月 漫长的过程,归功于@laconbass。 复杂,耗时,201

  • 问题内容: 我需要帮助,以了解如何在Go中妖魔化一个流程。 如果在命令行上启动此代码,则程序将返回控制权,但仍与cmd连接。关闭cmd将关闭程序。 如何将其与cmd分离?新增: 导致此错误:错误内存指针“恐慌” 问题答案: 我在“ golang-nuts”中询问,发现golang具有链接选项: