swoole 使用 xdebug 实现调试模式(PHPSTORM
2020-10-09 本文已影响0人
华仔233
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、运行查看是否成功
- 如下图显示则是成功了:
如果有什么问题可以留言,欢迎互相交流共进步。