SDHelper是SwooleDistributed隆重推出的開發者工具,配合最新版本的SD框架可以實現遠程斷點調試和代碼覆蓋率檢測的功能,無需安裝xdebug擴展。
我們打開工具選擇SD調試,在右側默認填寫了連接地址。
需要下載安裝最新的SD框架v3.2.7,找到backstage配置文件打開對應配置
//是否啟用backstage$config['backstage']['enable'] = true;//是否啟用xdebug$config['backstage']['xdebug_enable'] = true;//web頁面訪問埠$config['backstage']['port'] = 18000;//提供的ws埠$config['backstage']['socket'] = "0.0.0.0";$config['backstage']['websocket_port'] = 18083;//設置路徑$config['backstage']['bin_path'] = "/bin/exec/backstage";return $config;
配置中的websocket_port埠即為遠程調試埠,backstage.enable和backstage.xdebug_enable均要設置為true。
接下來使用xdebug啟動命令來啟動框架
php start_swoole_server.php xdebug
也可以添加-d選項,變成守護進程,xdebug命令啟動伺服器不會額外佔用伺服器資源,開發調試階段均可使用該命令來代替start,但是使用xdebug後自動reload和reload命令將失效,更新代碼必須重啟伺服器(根據版本的迭代後期會消除這種美中不足)。
此處的xdebug和xdebug擴展不是同一個,SD的遠程斷點調試無需安裝xdebug擴展。
通過xdebug命令啟動伺服器後,可以打開SDHelp點擊連接按鈕。連接傷後可以通過輸入文件名打開對應文件,通過添加斷點按鈕來添加斷點。
然後點擊開始調試
點擊開始調試後就不能添加斷點了,可以斷開調試,重新下斷點
我們訪問對應的邏輯。
可以看到邏輯已經進入斷點處,可以查看當前所有的變量信息,點擊繼續執行按鈕,可以跳轉到下一處斷點
調試器只會捕獲一次請求,也就是說斷點只會斷在一個請求上,對於其他的請求不會有影響,並發請求時斷點只會影響到其中一個請求上。
如果請求結束還想繼續捕獲的話,可以點擊重新捕獲按鈕,如果想結束調試可以點擊結束調試按鈕。
遠程調試器可以查看當前斷點的所有數據,這是var_dump和print_f大法無法替代的優勢,而且可以隨時打斷點不必修改代碼,並且只會捕獲其中一次的請求,不會眼花繚亂。但是也有限制,不支持自定義進程的調試,代碼必須在app目錄下才支持遠程調試。
代碼覆蓋率測試需要啟動特殊的命令執行
php start_swoole_server.php coverage
含有2個額外參數
coverage啟動會對性能有所影響,所以不適合壓測。
此時可以叫測試進行全方位的測試,測試結束可以查看測試的代碼覆蓋率。
沒有顏色的代表沒有被執行到,顏色越紅代表執行的次數越多。
可以通過調用次數排名來查看代碼執行次數的排行
如果次數過高需要注意是不是存在大量的循環需要優化,或者出現了死循環。
工具提供了tcp和ws的連接調試,比市面上的工具都會更加好用些
可以通過工具的Hex數據構建來模擬各類協議的組成,方便理解協議的構成。
SD會不斷的成長壯大,為大家提供一個更舒適的開發體驗。
git獲取:https://github.com/SwooleDistributed/SDHelper-Bin
SwooleDistributed框架 https://github.com/SwooleDistributed/SwooleDistributed