1、安裝sdebug插件
- 說明: swoole的官方編程須知中已經說到了,swoole與常規版本的 xdebug 不兼容,主要是由於大量全局變量的使用違背了協程的規範,可以見此網址的說明:https://wiki.swoole.com/wiki/page/851.html
- 另外如果想斷點調試基於swoole的項目,專門衍生出了一個 sdebug,供調試swoole項目。安裝流程參見:https://github.com/mabu233/sdebug
1.1、克隆
- 將對應的 sdebug 文件克隆下來(任意位置都行,臨時文件用於引入php中)
git clone https://github.com/swoole/sdebug.git
- 進入sdebug文件中
cd sdebug
1.2、編譯
- 運行phpize (或者 如果phpize不在您的路徑中的情況下:/path/to/phpize )
phpize
- ./configure --enable-xdebug (如果php-config不在您的路徑中需要找到對應的路徑 )
./configure --enable-xdebug --with-php-config=/www/server/php/72/php-config
- make 命令運行
make clean && make && make install
2、配置
2.1、配置 php.ini
- 進入到php.ini的目錄
cd www/server/php/72/etc
- 打開php.ini
vi php.ini
- 將下列的配置寫入文件最下面幾行(按住鍵盤的PgDn即可快速向下翻頁)
;開啓xdebug支持遠程調試
xdebug.remote_enable=1
;遠程調試的主機,一般都是docker宿主機器,本地調試就是本機,ip可以通過`docker inspect 容器名獲得`
xdebug.remote_host=127.0.0.1
;遠程調試機器的端口,一般是9000,和後面講到的phpStorm裏面保持一致
xdebug.remote_port=9000
;idekey 對接調試的密鑰,和後面phpStorm裏面的務必保持一致
xdebug.idekey=PHPSTORM
;自動觸發調試,可以將這個值設爲1;
xdebug.remote_autostart=1
;更多參數介紹請參見這裏 https://xdebug.org/docs/all_settings
xdebug.remote_connect_back=1
xdebug.remote_handler=dbgp
xdebug.max_nesting_level=250
2.2、配置PHPSTORM
- 配置 DBGp 的反向代理
- 配置 Servers
- 需要改爲Xdebug模式
- 端口需要和你跑swoole主端口一致
- 絕對路徑需要配置,不然調試時候會報錯,我這裏寫的是項目在子系統中的路徑
3、調試
3.1、選擇調試的服務並打開監聽
3.2、調試時候的順序
- 第一步:點擊打開Debug 'debug'(也就是那個昆蟲)或者快捷鍵 Shift+F9
- 第二步:開啓 swoole 服務,如果當前打開過則關掉之後開啓
- 第三步:在對應的地方打上斷點
- 第四步:請求對應打斷點的接口/URL 即可調試
3.3、運行查看是否成功
- 如下圖顯示則是成功了:
如果有什麼問題可以留言,歡迎互相交流共進步。