前段時間說過如何使用 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
中,若是緩存文件存在,當啓動調試時,文件中的斷點信息會被自動加載。
若是不指定文件絕對路徑,默認是當前停留的文件。
若是不輸入命令直接回車,默認是上一條命令