kaola-fed / blog

kaola blog
723 stars 56 forks source link

浅谈 Egg 进程调试 #275

Open ImHype opened 5 years ago

ImHype commented 5 years ago

对于软件开发而言,单步调试一直是定位问题的神器,一步一步确认排查可以让 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 进程

⚠️注意点

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

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

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

环境变量与参数说明:

如何调试 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 应用的一些简单的调试方法,对于:

后面再做介绍

Anlibraly commented 5 years ago

点赞👍

yaoleilei commented 5 years ago

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

ImHype commented 5 years ago

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

yaoleilei commented 5 years ago

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

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