资讯专栏INFORMATION COLUMN

你会 Nodejs (多进程)调试嘛

zhaochunqi / 1142人阅读

前言

我总是调侃好多 nodejs 开发都不会多进程调试,这其中就包括了我。
直到有一天,我不得不使用它来解决一些问题,作为一个懒人,我喜欢用简单的办法,所以这可能是最简单的 Nodejs 调试方法,话不多说进入正题

单进程调试
console.log()

单进程的调试,如果场景不复杂、比较好预判,可以直接打印到控制台

// 添加参数 --debug-brk 可以在第一行断点
// node --inspect --debug-brk index.js
node --inspect index.js

nodejs 在 v6.3.0 版本之后支持了 node --inspect index.js 这种调试方式,可以打开一个 chrome 页面,用前端熟悉的方式进行断点调试。

Debugger listening on port 5863.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
    chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:5863/7fd57fb3-86fa-4519-8621-39147428b15d

像这样,会有一个 chrome-devtools 协议的地址,复制到 chrome 中就可以开启调试

多进程调试

假设我有一个这样的多进程 Nodejs 服务

if (cluster.isMaster) {
  for (var i = 0; i < cpuCount; i++) {
    cluster.fork();
  }
  const agentWorker = cluster.fork({ "AGENT_WORKER": true });
}

注意对比,通过cluster.setupMaster可以设置 master 进程 fork work 进程时的参数配置

if (cluster.isMaster) {
  if (debug) {
    // 在 fork 进程之前添加调试参数,--debug-brk 指代码在执行第一行时进行断点
    cluster.setupMaster({
      execArgv: ["--inspect", "--debug-brk"]
    });
  }
  for (var i = 0; i < cpuCount; i++) {
    cluster.fork();
  }
  const agentWorker = cluster.fork({ "AGENT_WORKER": true });
}

像单进程一样,不过每个进程都会有一个调试 url,但我们依然可以直接在 chrome 里面进行多进程调试

如果你还不会,快去试试吧

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87192.html

相关文章

  • 大话-node真的是单线程吗?

    摘要:当你使用的活动监视器你会发现,实际的进程数为菜鸟是因为线程池的原因吗老鸟不错嘛,还知道线程池呢但非也非也。菜鸟竟然不是线程池老鸟你忽视了集成了引擎。启动后会创建实例,而实例是多线程的。 老鸟:伸着懒腰,看着窗外明媚的阳光,喝一口清茶,心情大美。一天的好心情莫过于此。老鸟:菜鸟,你这消失了大半个月,忙什么呢?菜鸟:听说node最近很火,这不趁着年轻,多储存点知识储备呢!老鸟:那你说说你对...

    Yang_River 评论0 收藏0
  • 十分钟搭建centos+nodejs+nestjs+caddy+pm2线上环境

    摘要:安装及线上环境配置安装官方安装说明地址执行命令至此,安装完成版本查看安装官方文档地址首次安装执行命令以后创建项目只需在你需要的路径下执行开发测试环境下直接执行以下命令启动项目后面加上可以在修改现有文件后自动进行重启浏览器输入即可 centos+node.js+nest.js+caddy+pm2安装及线上环境配置 node.js安装 官方安装说明地址 https://github.com...

    xiaoqibTn 评论0 收藏0
  • 使用Chrome DevTools调试Nodejs

    摘要:第三步在打开在地址栏输入并回车后就会看到以下页面了点击上面的链接跳转到调试页面你会看到一个调试当前代码的弹窗。更好的体验是,当你的重启后,这个调试窗口会重新连接。从上图,你会看到一堆经常用到的调试工具。 事实上chrome devtools在2016年5月就已经支持Nodejs的调试了,具体可以观看英文原版Google I/O上的视频 第一步:下载和安装最新版本的Nodejs(要求6....

    shadajin 评论0 收藏0
  • 浅谈前端中的错误处理

    摘要:如何避免内存泄露内存泄漏很常见,特别是前端去写后端程序,闭包运用不当,循环引用等都会导致内存泄漏。有的时候很难避免一些可能产生内存泄漏的问题,可以利用每次调用都在一个沙箱环境下调用,用完回收调。 某一天用户反馈打开的页面白屏幕,怎么定位到产生错误的原因呢?日常某次发布怎么确定发布会没有引入bug呢?此时捕获到代码运行的bug并上报是多么的重要。 既然捕获错误并上报是日常开发中不可缺少的...

    ShowerSun 评论0 收藏0
  • 浅谈前端中的错误处理

    摘要:如何避免内存泄露内存泄漏很常见,特别是前端去写后端程序,闭包运用不当,循环引用等都会导致内存泄漏。有的时候很难避免一些可能产生内存泄漏的问题,可以利用每次调用都在一个沙箱环境下调用,用完回收调。 某一天用户反馈打开的页面白屏幕,怎么定位到产生错误的原因呢?日常某次发布怎么确定发布会没有引入bug呢?此时捕获到代码运行的bug并上报是多么的重要。 既然捕获错误并上报是日常开发中不可缺少的...

    BothEyes1993 评论0 收藏0

发表评论

0条评论

zhaochunqi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<