做了个 Xdebug trace 查看工具

2019-09-03 16:22:11 +08:00
 kevinwkxw

最近小伙伴们的 PHP 项目遇到性能问题,想要定位性能问题。查了下 PHP 有一种方式是通过 Xdebug 获取程序执行的 trace,通过分析每个函数执行所占用的时间来定位问题所在。但那拿到 trace 文件后发现 Xdebug 打印成信息量相当庞大,虽然 Xdebug 在默认情况下以方便人们阅读的方式来打印 trace 信息的,但要想人工在近 10 万行信息中找到重要数据仍然是相当困难的。

去 google 是否有相应的工具,找到个xdebug-trace-tree,装上后,发现这个工具竟然不能对树进行折叠,其方便程度还不如 vim。

继续 google,发现多年以前,有人在Stackoverflow上建议使用 grep 对数据进行过滤,如:

cat trace.xt | grep -v '                      '

试了下这个方法,效率提高了不少。在服务器上没有 gui 的环境下,可以帮我们一步步缩小问题的范围,但终究不够直观。

看了下 Xdebug trace 的格式,也不复杂。既然找不到,干脆自己做一个,也方便以后小伙伴们使用。即用了一天写了个XdebugTraceViewer的原型,最近又优化了下功能,基本上可正常使用,分享给需要的同学。由于从未做过 PHP 开发,对 PHP 并不了解,精通 PHP 的同学也可分享下 PHP 性能分析的经验。

项目地址: https://github.com/kuun/xdebug-trace-viewer

功能简介:

截图:

4193 次点击
所在节点    PHP
5 条回复
cszchen
2019-09-04 01:19:24 +08:00
很优秀,可惜会用 xdebug 的本来就不多
jfcherng
2019-09-04 01:36:05 +08:00
QCacheGrind
kevinwkxw
2019-09-04 09:07:28 +08:00
@cszchen 启用 trace 的设置倒还简单,使用 xdebug 调试确实有点反人类。
anewg
2019-09-04 11:15:02 +08:00
厉害
Rache1
2021-04-15 11:04:12 +08:00
nb,好用 ,正好需要,star

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/597559

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX