Vagrant+PHPStorm+Swoole+XDebug断点调试

发布时间:2021-12-09 14:30:29编辑:文明阅读(1274)

    一.为自己的php版本选择正确的xdebug版本

     

    首先要得到虚拟机运行环境的phpinfo()信息,我是这样做的

    在浏览器访问给虚拟机配的域名

    1.png

     

    把phpinfo() 页面的内容Ctrl+A全部选中,Ctrl+C复制,

    打开https://xdebug.org/wizard.php

    粘贴到该网址的页面的一个空白输入框,点击底下的按钮

    2.png

     

     

     

    成功会出现以下页面信息:

    3.png

     

    4.png

     

     

    上面给出安装xdebug的9个操作步骤,下面我会根据实际情况和遇到的问题进行讲解

     

    二.安装xdebug

    第一步 :点击下载这个压缩包xdebug-2.6.0alpha1.tgz

    下载完我们要把它放到虚拟机里面去解压,我自己是放到/tmp目录里面的

    执行sudo –i 获取更高的权限

    第二步:解压命令:tar -xvzf xdebug-2.6.0alpha1.tgz

    第三步:进入解压之后的文件夹 cd xdebug-2.6.0alpha1

    第四步:执行phpize 命令

    phpize是属于php-devel 中的东西,主要是设定php 外挂模组的一些设定

    第五步:执行 ./configure命令

    执行结果的最后一行如果出现这个

    5.png

     

     

     

    出现这个错误说明你执行./configure --with-php-config 这个参数配置路径错误导致的。执行以下命令找到php-config的路径

    6.png

     

     

     

    重新执行命令:

    ./configure --with-php-config=/data/server/php/bin/php-config

    第六步:执行make 命令

     

    第七步:把xdebug.so复制到指定目录下

     

    我们可以看到当前目录下会有modules这个目录

    7.png

     

     

     

    执行命令:cp xdebug.so /data/server/php/lib/php/extensions/no-debug-non-zts-20160303

    8.png

     

     

     

    第八步:vim /data/server/php/etc/php.ini

     

    zend_extension="xdebug.so"

    ;开启xdebug支持远程调试

    xdebug.remote_enable=1

    ;远程调试的主机,一般都是docker宿主机器,本地调试就是本机,ip可以通过`docker inspect 容器名获得`

    xdebug.remote_host=172.16.8.31

    ;远程调试机器的端口,一般是9000,和后面讲到的phpStorm里面保持一致

    xdebug.remote_port=9001

    ;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

    xdebug.remote_log='/data/www/coupang/Log/xdebug_docker.log'

    9.png

    注意:如果启动服务的时候,日志出现:Creating socket for '192.168.39.101:9001', poll success, but error: Operation now in progress (29). 的字样的时候,remote_host的值需要填写本机实际ip地址(cmd里面的ipconfig)

     

    第九步:重启服务器 ,例如nginx 根据你实际情况来定)

     

     

    三 配置phpstorm

     

    点击箭头指向的地方,添加php解释器,我们用的是PHP7.1.5

    10.png

     

     

     

    点击左上角的+ ,选择Remote

    11.png

     

    12.png

     

    13.png

    14.png

     

    PHP->Debug->DBGpProxy设置如下

    1639031126(1).jpg

     

    15.png

     

     

    PHP->Servers中设置映射路径

    点击+, 建立起相应的的目录映射

    1639031496(1).jpg

     

     

     

    四.安装 xdebug helper

    Xdebug工作原理

    IDE(如PhpStorm)已经集成了一个遵循DBGPXdebug插件,当开启它的时候,会在本地开一个Xdebug调试服务,监听在调试器中所设置的端口上,默认是9000,这个服务就会监听所有到9000端口的链接。在PhpStorm中,位于:工具栏 > Run > Start / Stop Listening for PHP XdebugConnetions

    当浏览器发送一个带 XDEBUG_SESSION_START 的参数的请求到服务器时,服务器接受后将其转到后端的php处理,如果php开启了xdebug模块,则会将debug信息转发到客户端IPIDE的调试端口上。当参数或者cookie信息中不带 XDEBUG_SESSION_START,则不会启动调试。这就为后续在浏览器中添加开关提供了可能。Xdebug的官方给出了一个示例图:很好的展示了相互调用关系。这个示例图是绑定了ip,即使用了固定ip地址,xdebug.remote_connect_back= 0 ,也是Xdebug 的默认方式,这种情况下,Xdebug 在收到调试通知时会读取配置 xdebug.remote_host xdebug.remote_port ,默认是 localhost:9000,然后向这个端口发送通知,这种方式只适合单一客户端开发调试。我们这里配置xdebug.remote_conncet_back=1,可接受多客户端开发调试。

     

    xdebughelper是一款chrome插件,和phpstormeclipsenetbeansIDE协同工作方便调试。这个安装很简单,到谷歌商店()直接安装,或者百度一下。安装好后,在选项里设置IDEphpstorm就可以了。

     

     

     

    五.调试

    1.启动xdebug helper:点击xdebug helper图标,选择Debug项,灰色图标变成绿色

     

    2. .phpstorm中将需要调试的代码打上断点(在行号旁边点击一下即可),点击右上角电话图标开启调试监听,由一头绿一头红变成两头绿即可

     

     

    3.用浏览器或者postman访问地址的时候,在phpstormdebugger窗口可以看到调试信息。Debugger窗口上方的的这些箭头就是断点执行的按钮(如果断点执行完毕则重新访问,再次断点调试)

     

     

    把鼠标放到这些按钮上面会出现使用提示

     

     

     

    Step Into:单步执行,遇到子函数就进入并且继续单步执行(简而言之,进入子函数);

    Step Over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。有一点,经过我们简单的调试,在不存在子函数的情况下是和Step Into效果一样的(简而言之,越过子函数,但子函数会执行)。

     

    Step Out:当单步执行到子函数内时,用Step Out就可以执行完子函数余下部分,并返回到上一层函数。

     

     

     

     原文:https://blog.csdn.net/tuobicui6522/article/details/79720494

     

     

  • 游客141764
    26