PhpDev.App
swoole/yasd

swoole/yasd

Stars: 340

Forks: 41

Pull Requests: 77

Issues: 102

Watchers: 11

Last Updated: 2023-03-24 01:38:26

Yet Another Swoole Debugger

License: Apache License 2.0

Languages: M4, C, C++, PHP, Shell

https://huanghantao.github.io/yasd-wiki/

English | 中文

yasd

Swoole 5.0.1 + PHP 8.1 already support xdebug, so there is no need to use the yasd debugger!

Yet Another Swoole Debugger. document

How to use it

Notice: if you use Swoole\Server, set the worker_num to 1, otherwise the breakpoint may fail.

build

You'll need to install the Boost library first.

macOS:

brew install boost

Ubuntu:

apt-get install libboost-all-dev

CentOS:

yum install boost boost-devel
phpize --clean && \
phpize && \
./configure && \
make clean && \
make && \
make install

set the ini file:

zend_extension=yasd

see the extension info:

php --ri yasd

IDE debug mode

zend_extension=yasd
yasd.debug_mode=remote
yasd.remote_host=127.0.0.1
yasd.remote_port=9000

cmd debug mode

All command supports fuzzy matching of priorities.

set the ini file:

zend_extension=yasd
yasd.debug_mode=cmd

start debug

php -e test.php

list

l

list source code

breakpoint

b absolute-file-path lineno

This will also save the breakpoint information in the cache file -- .breakpoints_file.log

You can change this file name by the ini file, e.g.

yasd.breakpoints_file="yasd.log"

If the cache file exists, the breakpoints in the file are automatically loaded when debug is started.

Delete breakpoints

d number

If a breakpoint is set or deleted without specifying absolute-file-path, It will set breakpoint in the current file.

watch point

We can monitor the variable changes or expression, for example:

watch $a
watch $a > 10
watch $name == 'swoole'

unwatch point

unwatch number

run

r

step over

n

step into

s

step out

f

backtrace

bt

info

show all breakpoints:

info breakpoints

show all watchpoints:

info watchpoints

continue

c

quit

q

print

p $a
p $this
p $this->prop

level

le

Q&A

Debugging with phpstorm (remote mode)

  • the port phpstorm listens on should be the one used for xdebug, also make sure remote connections are allowed: image

  • do NOT forget to use -e option when running scripts, debugging will not work otherwise

  • ensure that phpstorm listens on incoming connections:

image

Slow Start Framework

When using yasd, if the framework starts slowly (most of the time it's because the framework is scanning a lot of files), you can execute the following command.

Hyperf
composer dump-autoload -o

Then modify the following configuration config/config.php:

'scan_cacheable' => env('SCAN_CACHEABLE', true)
Imi

We did not find a slow start problem.

EasySwoole

We did not find a slow start problem.

MixPHP

We did not find a slow start problem.

Swoft

We did not find a slow start problem.

One

We did not find a slow start problem.

The breakpoint is not triggered

  1. No absolute path to the file is used
  2. The breakpoint is not a valid line, such as a function declaration, blank line, etc
  3. The code is generated with proxy classes, such as Hyperf. So you need to set breakpoints in the proxy class.