另一个Swoole调试器-Yasd

简介: 前段时间说过如何使用 Sdebug(Xdebug)来调试 Swoole,现在 PHP8 和 Xdebug3 都发布了,也有小伙伴在 Swoole 的 ISSUE 中询问 Xdebug 的支持,不过如果还继续兼容 Xdebug 的话肯定不是一件容易的事情。于是 Swoole 开发组成员 @codinghuang 开发了一个新的调试扩展,名为 Yasd ,另一个 Swoole 调试器。

先简单概述一下这个调试器能干什么:

  1. 调试协程
  2. 断点调试
  3. 断点缓存
  4. 查看调用栈
  5. 单步调试
  6. .....

更多功能敬请期待~包括 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]

>

可用命令


接着就可以来使用一些命令进行调试了,所有命令都支持优先级模糊匹配,如lilislist都等于l,表示查看源码。

查看源码 list

l

设置断点

b 文件的绝对路径 需要断点的行号


默认会将断点信息保存在缓存文件 .breakpoints_file.log 中;

你也可以通过修改 php.ini 指定此文件名,如:

yasd.breakpoints_file=yasd.log

如果缓存文件存在,当启动调试时,文件中的断点信息会被自动加载;

删除断点 delete

d 文件的绝对路径 断点所在的行号


如果设置或者删除断点时,不指定文件绝对路径,默认是当前停留的文件。


运行 run

r


下一步 step over

n

遇到函数的时候,不会进入函数内部


下一步 step into

s

遇到函数的时候,会进入函数内部


跳出当前函数 finish

f


查看调用栈

bt


查看所有断点信息 info

i


继续运行 continue

c


退出 quit

q


打印变量 print

p

变量名字不需要带$,例如:

p a

p this

p this->prop


查看当前所在的协程 level

le


一些小细节


  • 打印断点格式filename:lineno

如果你是在 IDE 中调试,可以直接点击跳转到对应的文件

  • 自动缓存断点信息

默认会将断点信息保存在缓存文件 .breakpoints_file.log 中,如果缓存文件存在,当启动调试时,文件中的断点信息会被自动加载。

  • 设置断点和删除断点

如果不指定文件绝对路径,默认是当前停留的文件。

  • 自动重复命令

如果不输入命令直接回车,默认是上一条命

目录
相关文章
|
网络协议 IDE PHP
Swoole如何使用Xdebug进行初步调试
在 PHP-FPM 中使用 Xdebug 的人应该不少,而在 Swoole 中使用 Xdebug 的人还是很少的,原因是 Swoole 扩展明确说明了和 Xdebug 扩展冲突 不过好在提供了一个 Sdebug 进行了兼容,让 Xdebug 可用于 Swoole 环境进行断点、调试
948 0
Swoole如何使用Xdebug进行初步调试
|
9月前
|
Web App开发 监控 JavaScript
调试器可以做什么
【4月更文挑战第11天】调试器是程序员诊断和修复程序错误的必备工具,提供执行控制(如逐行执行、设置断点)、变量值实时监控、函数调用堆栈跟踪、内存使用情况监视及异常处理等功能。JavaScript开发者可利用Chrome DevTools和Firefox DevTools等进行高效调试。调试器极大地助力了问题定位与修复。
87 5
|
存储 安全 NoSQL
1.1 熟悉x64dbg调试器
x64dbg 是一款开源、免费、功能强大的动态反汇编调试器,它能够在`Windows`平台上进行应用程序的反汇编、调试和分析工作。与传统的调试器如`Ollydbg`相比,x64dbg调试器的出现填补了`Ollydbg`等传统调试器的不足,为反汇编调试工作提供了更高效、更可靠的解决方案。正是因为有了这些优点,才能使其成为当今最受欢迎的反汇编调试软件之一。
1.1 熟悉x64dbg调试器
|
应用服务中间件 Linux PHP
xdebug3+php8.0+vscode断点调试php程序
xdebug3+php8.0+vscode断点调试php程序
561 0
|
NoSQL Go 调度
swoole| swoole 协程初体验
通过协程的执行初窥 swoole 中协程的调度; 理解协程为什么快; swoole 协程和 go 协程对比
248 0
swoole| swoole 协程初体验
|
消息中间件 缓存 Unix
Swoole| Swoole 中 Process
这篇 blog 折腾了很久才写出来, 问题主要还是在 **理解** 上. 有时候就是这样,
244 0
Swoole| Swoole 中 Process
|
网络协议 关系型数据库 Go
swoole| swoole 协程用法笔记
swoole| swoole 协程用法笔记
906 0
|
C# C++ Windows
WinDbg 调试工具的使用
概述 项目接近尾声了,可是在运行时会有memory leak(内存泄露) bug.产品在运行一天后,内存增长致1.4G,而我们产品的初始内存才有70M,问题很严重,决定采用WinDbg工具来分析代码问题有原因到底在哪里. WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。
900 0
|
负载均衡 应用服务中间件 nginx