前段时间说过如何使用 Sdebug(Xdebug)来调试 Swoole,如今 PHP8 和 Xdebug3 都发布了,也有小伙伴在 Swoole 的 ISSUE 中询问 Xdebug 的支持,不过若是还继续兼容 Xdebug 的话确定不是一件容易的事情。php
因而 Swoole 开发组成员 @codinghuang 开发了一个新的调试扩展,名为 Yasd ,另外一个 Swoole 调试器。git
先简单概述一下这个调试器能干什么:github
更多功能敬请期待~包括 PHP8 的支持和集成 IDE 的支持。缓存
下面就来看看如何使用这个调试器:bash
须要先安装 Yasd 扩展swoole
phpize --clean && \ phpize && \ ./configure && \ make clean && \ make && \ make install
设置 php.ini 文件:函数
zend_extension=yasd.so
查看扩展信息:ui
php --ri yasd
安装成功以后,在须要调试时,增长-e
参数,如this
php -e test.php
你就会看到这样的输出spa
$ php -e test.php [Welcome to yasd, the Swoole debugger] [You can set breakpoint now] >
接着就能够来使用一些命令进行调试了,全部命令都支持优先级模糊匹配,如li
、lis
、list
都等于l
,表示查看源码。
l
b 文件的绝对路径 须要断点的行号
默认会将断点信息保存在缓存文件 .breakpoints_file.log
中;
你也能够经过修改 php.ini 指定此文件名,如:
yasd.breakpoints_file=yasd.log
若是缓存文件存在,当启动调试时,文件中的断点信息会被自动加载;
d 文件的绝对路径 断点所在的行号
若是设置或者删除断点时,不指定文件绝对路径,默认是当前停留的文件。
r
n
遇到函数的时候,不会进入函数内部
s
遇到函数的时候,会进入函数内部
f
bt
i
c
q
p
变量名字不须要带$
,例如:
p a p this p this->prop
le
filename:lineno
若是你是在 IDE 中调试,能够直接点击跳转到对应的文件
默认会将断点信息保存在缓存文件 .breakpoints_file.log
中,若是缓存文件存在,当启动调试时,文件中的断点信息会被自动加载。
若是不指定文件绝对路径,默认是当前停留的文件。
若是不输入命令直接回车,默认是上一条命令