本篇文章給大家?guī)砹顺糜玫膒hpstorm debug工具,平常在開發(fā)中,可能會(huì)有人選擇安裝xdebug擴(kuò)展,在phpstorm中配置xdebug來調(diào)試,希望對大家有幫助。
平常在開發(fā)中,總會(huì)有一些需要 debug 的時(shí)候,手動(dòng)打斷點(diǎn) var_dump、die 等方式總是耗時(shí)耗力還不優(yōu)雅,這時(shí)候可能會(huì)有人選擇安裝 xdebug 擴(kuò)展,在 phpstorm 中配置 xdebug 來調(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 庫
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 ;本地開發(fā)地址 yasd.remote_host=127.0.0.1 ;本地開發(fā)監(jiān)聽端口 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)聽 9000 端口
2. 點(diǎn)擊 phpstorm 右上角的電話圖標(biāo)啟動(dòng)監(jiān)聽
3. 測試 debug 調(diào)試
在 Laravel 中隨便寫一個(gè) test command
php -e artisan test
到這里就已經(jīng)成功了
調(diào)試 Hyperf 框架
上面說了在 fpm 中調(diào)試,接下來說一下在 Hyperf 框架中如何調(diào)試
需要注意的幾點(diǎn)
1、在 Hyperf 中使用需要將 config.php 中的 scan_cacheable 參數(shù)設(shè)置為 true,該參數(shù)為是否掃描代理類,若設(shè)置為 true,則每次啟動(dòng)都會(huì)直接掃描緩存代理類,而不是重新掃描在生成代理類。
設(shè)置為 true 后需要注意,每次修改代碼需要手動(dòng)生成代理類,composer dump-autoload -o,然后在啟動(dòng)。
或者直接在代理類中修改代碼,當(dāng) debug 結(jié)束后,再將代理類中的代碼復(fù)制到真實(shí)類中。
代理類生成路徑在 runtime/container/proxy
2、在 Hyperf 框架中如果使用到了 Swoole Server,需要將 worker_num 設(shè)置為 1 否則斷點(diǎn)可能不會(huì)生效。該參數(shù)在 server.php 中。
剩下的調(diào)試就和上面講的沒什么區(qū)別了。
推薦學(xué)習(xí):《phpstorm教程》