前段时间讲到如何使用Sdebug(Xdebug)调试Swoole。现在PHP8和Xdebug3都发布了,也有小伙伴在Swoole的ISSUE中询问Xdebug的支持情况,但是如果还兼容Xdebug肯定不是一件容易的事情。于是,Swoole开发团队的成员@codinghuang开发了一个新的调试插件Yasd,另一个Swoole调试器。让我简要概述一下这个调试器可以做什么:调试协程断点、调试断点缓存、查看调用堆栈和单步调试。请继续关注更多功能~包括对PHP8的支持和对集成IDE的支持。让我们看看如何使用这个调试器:安装扩展,需要先安装Yasd扩展phpize--clean&&\phpize&&\./configure&&\makeclean&&\make&&\makeinstall设置php.ini文件:zend_extension=yasd.so查看扩展信息:php--riyasd开始调试安装成功后,需要调试时,加上-e参数,比如php-etest.php,就可以了看到这样的输出$php-etest.php[欢迎使用Swoole调试器yasd][你现在可以设置断点]>可用的命令然后你可以使用一些命令进行调试,所有命令都支持优先级模糊匹配,例如li,lis,list等于l,表示查看源代码。查看源码列表l设置断点的绝对路径b文件断点的行号为必填项。默认情况下,断点信息会保存在缓存文件.breakpoints_file.log中;也可以通过修改php.ini来指定这个文件名,如:yasd。breakpoints_file=yasd.log如果缓存文件存在,启动调试时会自动加载文件中的断点信息;delete删除文件的绝对路径。设置或删除断点时不指定断点所在行号文件的绝对路径,默认为当前文件。运行runr,nextstepovern,遇到函数时,不进入函数,nextstepins,遇到函数时,进入函数,跳出当前函数finishf,查看调用栈,bt,查看所有断点信息infoi,继续运行continuec,退出quitq打印变量printp变量名不需要$,例如:papthispthis->prop查看当前协程levelle一些小细节printbreakpointformatfilename:lineno如果你在IDE中调试,可以直接点击跳转到对应的文件,自动缓存断点信息。默认情况下,断点信息将保存在缓存文件.breakpoints_file.log中。如果缓存文件存在,启动调试时会自动加载文件中的断点信息。设置断点和删除断点如果不指定文件的绝对路径,默认为当前文件。自动重复命令如果不输入命令直接回车,默认为上一条命令更多细节等你发现
