另一个Swoole调试器 - Yasd
码农天地 -前段时间说过如何使用 Sdebug(Xdebug)来调试 Swoole,现在 PHP8 和 Xdebug3 都发布了,也有小伙伴在 Swoole 的 ISSUE 中询问 Xdebug 的支持,不过如果还继续兼容 Xdebug 的话肯定不是一件容易的事情。
于是 Swoole 开发组成员 @codinghuang 开发了一个新的调试扩展,名为 Yasd ,另一个 Swoole 调试器。
先简单概述一下这个调试器能干什么:
调试协程断点调试断点缓存查看调用栈单步调试.....更多功能敬请期待~包括 PHP8 的支持和集成 IDE 的支持。
下面就来看看如何使用这个调试器:
安装扩展需要先安装 Yasd 扩展
phpize --clean && \
phpize && \
./configure && \
make clean && \
make && \
make install
设置 php.ini 文件:
zend_extension=yasd.so
查看扩展信息:
php --ri yasd
开始调试安装成功之后,在需要调试时,增加-e
参数,如
php -e test.php
你就会看到这样的输出
$ 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
如果缓存文件存在,当启动调试时,文件中的断点信息会被自动加载;
删除断点 deleted 文件的绝对路径 断点所在的行号
如果设置或者删除断点时,不指定文件绝对路径,默认是当前停留的文件。
运行 runr
下一步 step overn
遇到函数的时候,不会进入函数内部
下一步 step intos
遇到函数的时候,会进入函数内部
跳出当前函数 finishf
查看调用栈bt
查看所有断点信息 infoi
继续运行 continuec
退出 quitq
打印变量 printp
变量名字不需要带$
,例如:
p a
p this
p this->prop
查看当前所在的协程 levelle
一些小细节打印断点格式filename:lineno
如果你是在 IDE 中调试,可以直接点击跳转到对应的文件
自动缓存断点信息默认会将断点信息保存在缓存文件 .breakpoints_file.log
中,如果缓存文件存在,当启动调试时,文件中的断点信息会被自动加载。
如果不指定文件绝对路径,默认是当前停留的文件。
自动重复命令如果不输入命令直接回车,默认是上一条命令
更多细节等你来发现 特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。
php介绍
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
上一篇: elasticsearch