平常在開發中,總會有一些需要 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 <[email protected]> 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 debug工具之yasd(超好用)的詳細內容,更多請關注TW511.COM其它相關文章!