本篇文章給大家?guī)?lái)了超好用的phpstorm debug工具,平常在開(kāi)發(fā)中,可能會(huì)有人選擇安裝xdebug擴(kuò)展,在phpstorm中配置xdebug來(lái)調(diào)試,希望對(duì)大家有幫助。
平常在開(kāi)發(fā)中,總會(huì)有一些需要 debug 的時(shí)候,手動(dòng)打斷點(diǎn) var_dump、die 等方式總是耗時(shí)耗力還不優(yōu)雅,這時(shí)候可能會(huì)有人選擇安裝 xdebug 擴(kuò)展,在 phpstorm 中配置 xdebug 來(lái)調(diào)試。
但當(dāng)你需要用到 swoole 框架時(shí),并需要調(diào)試 swoole 框架中代碼時(shí),xdebug 是不能用在 swoole 上的,是和 swoole 有沖突的。
然后我發(fā)現(xiàn)了一款比較好用的,可以兼容 fpm 框架,和 swoole 框架的 debug 調(diào)試工具,yasd.
安裝
1. Mac 上安裝 boots 庫(kù)
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" ;命令行調(diào)試 ;yasd.debug_mode=cmd ;遠(yuǎn)程調(diào)試 yasd.debug_mode=remote ;本地開(kāi)發(fā)地址 yasd.remote_host=127.0.0.1 ;本地開(kāi)發(fā)監(jiān)聽(tīng)端口 yasd.remote_port=9000
查看擴(kuò)展信息
? 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. 調(diào)試腳本
使用 yasd 調(diào)試腳本,必須要添加 -e 的 php 參數(shù),例如這樣
# 調(diào)試普通php腳本 php -e test.php # 調(diào)試 laravel 的 command php -e artisan test # 調(diào)試 hyperf 框架 php -e bin/hyperf start
配置 phpstorm
1. 配置 phpstorm 監(jiān)聽(tīng) 9000 端口
2. 點(diǎn)擊 phpstorm 右上角的電話(huà)圖標(biāo)啟動(dòng)監(jiān)聽(tīng)
3. 測(cè)試 debug 調(diào)試
在 Laravel 中隨便寫(xiě)一個(gè) test command
php -e artisan test
到這里就已經(jīng)成功了
調(diào)試 Hyperf 框架
上面說(shuō)了在 fpm 中調(diào)試,接下來(lái)說(shuō)一下在 Hyperf 框架中如何調(diào)試
需要注意的幾點(diǎn)
1、在 Hyperf 中使用需要將 config.php 中的 scan_cacheable 參數(shù)設(shè)置為 true,該參數(shù)為是否掃描代理類(lèi),若設(shè)置為 true,則每次啟動(dòng)都會(huì)直接掃描緩存代理類(lèi),而不是重新掃描在生成代理類(lèi)。
設(shè)置為 true 后需要注意,每次修改代碼需要手動(dòng)生成代理類(lèi),composer dump-autoload -o,然后在啟動(dòng)。
或者直接在代理類(lèi)中修改代碼,當(dāng) debug 結(jié)束后,再將代理類(lèi)中的代碼復(fù)制到真實(shí)類(lèi)中。
代理類(lèi)生成路徑在 runtime/container/proxy
2、在 Hyperf 框架中如果使用到了 Swoole Server,需要將 worker_num 設(shè)置為 1 否則斷點(diǎn)可能不會(huì)生效。該參數(shù)在 server.php 中。
剩下的調(diào)試就和上面講的沒(méi)什么區(qū)別了。
推薦學(xué)習(xí):《phpstorm教程》