Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

浅谈 Egg 进程调试 #275

Open
ImHype opened this issue Jul 31, 2018 · 4 comments
Open

浅谈 Egg 进程调试 #275

ImHype opened this issue Jul 31, 2018 · 4 comments

Comments

@ImHype
Copy link
Member

ImHype commented Jul 31, 2018

对于软件开发而言,单步调试一直是定位问题的神器,一步一步确认排查可以让 bug 无所遁形。

本文是对 Egg 应用远程调试方式的整理,建议再阅读官网使用 egg-bin 调试保持最正确的理解。

最简单的 egg 调试流程

$ egg-bin debug

会发现命令行会输出 console:

$ Debug Proxy online, now you could attach to 9999 without worry about reload.
$ DevTools → chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9999/__ws_proxy__

将这条链接在浏览器打开,即可调试 Egg 的 worker 进程

⚠️注意点

  • debug 模式打开,守护进程只会开启一个 worker 进程;
  • 如果要本地调试测试环境,请把 127.0.0.1:9999 替换成测试环境 ip;

如何配置 master/agent/worker 进程的 debug 端口

由于测试机资源问题,可能会在一台云主机上部署多个 Node 应用,此时会出现 debug 端口冲突的问题,可以使用以下方式进行灵活地配置各个进程的 debug 端口号

$ EGG_AGENT_DEBUG_PORT=7878 egg-bin debug --proxy=9999 --inspect=7879

环境变量与参数说明:

  • inspect
    • master 进程调试端口直接取自 inspect 设置的值,默认 9229
    • worker 进程调试端口会对 inspect 字段累加后取可用端口
  • EGG_AGENT_DEBUG_PORT - agent 调试端口设定,默认 5800
  • proxy - worker 进程调试端口设定(转发 websocket 协议到真实的 worker 进程调试端口),默认 9999

如何调试 agent 进程

对于一般的用户而言,不太需要关心 agent 进程的存在,但是对于插件开发者,可能需要对 agent 进程进行调试或者做性能问题排查,此时我们需要点亮 agent 进程调试的技能。

执行以下脚本启动应用:

$ npm run debug

找到第二条 debug 启动日志(master、 agent、worker的启动顺序)
image

默认值为 5800

使用 chrome 浏览器打开 chrome://inspect,点击 Discover network targets 👉的 configure 按钮
image

配置 agent 进程的 debug 端口号
image

点击 done 之后,你会发现 chrome://inspect 多了一个 agent 调试的 target
image

小结

以上为 egg 应用的一些简单的调试方法,对于:

  • egg 为何需要 proxy worker 的 debug 协议
  • 如何调试任意的 Node 进程

后面再做介绍

kaola-blog-bot added a commit that referenced this issue Jul 31, 2018
@ImHype ImHype changed the title 浅谈 Egg 远程调试 浅谈 Egg 进程调试 Jul 31, 2018
@Anlibraly
Copy link

点赞👍

@yaoleilei
Copy link

按EGG_AGENT_DEBUG_PORT=7878 egg-bin debug --proxy=9999 --inspect=7879这个方式启动后,负责转发的调试端口9999没有起来,能解释下原因吗,跟egg-bin版本会有关系吗

@ImHype
Copy link
Member Author

ImHype commented Jan 16, 2019

@yaoleilei 控制台是否有打印出 debugger listening 相关的日志

@yaoleilei
Copy link

@yaoleilei 控制台是否有打印出 debugger listening 相关的日志

没有。我试着把版本提到4.10可以了,以前用的是3.4.x。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants