本篇文章給大家帶來了超好用的phpstorm debug工具,平常在開發中,可能會有人選擇安裝xdebug擴展,在phpstorm中配置xdebug來調試,希望對大家有幫助。

平常在開發中,總會有一些需要 debug 的時候,手動打斷點 var_dump、die 等方式總是耗時耗力還不優雅,這時候可能會有人選擇安裝 xdebug 擴展,在 phpstorm 中配置 xdebug 來調試。
但當你需要用到 swoole 框架時,并需要調試 swoole 框架中代碼時,xdebug 是不能用在 swoole 上的,是和 swoole 有沖突的。
然后我發現了一款比較好用的,可以兼容 fpm 框架,和 swoole 框架的 debug 調試工具,yasd.
安裝
1. Mac 上安裝 boots 庫
brew install boost
2. 從 Github 上下載 yasd 源碼
git clone https://github.com/swoole/yasd.git
3. 編譯安裝 yasd
cd yasd phpize --clean && phpize && ./configure && make clean && make && make install
4. 修改 php.ini
zend_extension="yasd.so" ;命令行調試 ;yasd.debug_mode=cmd ;遠程調試 yasd.debug_mode=remote ;本地開發地址 yasd.remote_host=127.0.0.1 ;本地開發監聽端口 yasd.remote_port=9000
查看擴展信息
? yasd php --ri yasd yasd Yasd => enabled Author => codinghuang <codinghuang@qq.com> Version => 0.3.9-alpha Built => Jan 15 2022 14:09:47 Directive => Local Value => Master Value yasd.breakpoints_file => no value => no value yasd.debug_mode => remote => remote yasd.remote_host => 127.0.0.1 => 127.0.0.1 yasd.remote_port => 9000 => 9000 yasd.depth => 1 => 1 yasd.log_level => -1 => -1 yasd.max_executed_opline_num => 0 => 0 yasd.init_file => no value => no value yasd.open_extended_info => 0 => 0 xdebug.coverage_enable => 1 => 1 xdebug.profiler_enable => 1 => 1 xdebug.remote_autostart => 1 => 1 xdebug.remote_connect_back => 0 => 0 xdebug.remote_mode => req => req xdebug.idekey => hantaohuang => hantaohuang
5. 調試腳本
使用 yasd 調試腳本,必須要添加 -e 的 php 參數,例如這樣
# 調試普通php腳本 php -e test.php # 調試 laravel 的 command php -e artisan test # 調試 hyperf 框架 php -e bin/hyperf start
配置 phpstorm
1. 配置 phpstorm 監聽 9000 端口

2. 點擊 phpstorm 右上角的電話圖標啟動監聽

3. 測試 debug 調試
在 Laravel 中隨便寫一個 test command
php -e artisan test

到這里就已經成功了
調試 Hyperf 框架
上面說了在 fpm 中調試,接下來說一下在 Hyperf 框架中如何調試
需要注意的幾點
1、在 Hyperf 中使用需要將 config.php 中的 scan_cacheable 參數設置為 true,該參數為是否掃描代理類,若設置為 true,則每次啟動都會直接掃描緩存代理類,而不是重新掃描在生成代理類。
設置為 true 后需要注意,每次修改代碼需要手動生成代理類,composer dump-autoload -o,然后在啟動。
或者直接在代理類中修改代碼,當 debug 結束后,再將代理類中的代碼復制到真實類中。
代理類生成路徑在 runtime/container/proxy
2、在 Hyperf 框架中如果使用到了 Swoole Server,需要將 worker_num 設置為 1 否則斷點可能不會生效。該參數在 server.php 中。
剩下的調試就和上面講的沒什么區別了。
推薦學習:《phpstorm教程》
站長資訊網