• PHP Xdebug3 + VS Code 新版配置踩坑


      笔者最近有调试php代码的需求(由于技术太差静态分析看不出来x),网上安利Xdebug调试php,于是手痒也想配置一个。结果由于博客大多针对老版本Xdebug(大多是2),而新版本端口和配置改了许多,没法直接使用。后面看着文档和phpinfo手搓出一个配置,算是解决了。于是把踩坑过程记录下来,与读者分享。

    介绍

    Xdebug,是一个PHP插件,可用于单步调试/输出调试等,配合VS Code的插件,功能十分强大,可满足日常大多数环境需求。

    插件功能包括:

    • 远程监听调试
    • 本地单文件调试
    • 本地浏览器调试

    一般前两个功能使用较多,小脚本使用第二个功能,网站类代码推荐监听调试。

    本教程基于Xdebug3,phpstudy中自带版本不匹配插件,建议不使用那个库

    下载安装

    Xdebug: Support — Tailored Installation Instructions

    按照指引,将网站phpinfo完整复制到Wizard中。网站会为你推荐指定PHP版本、系统环境的Xdebug库。笔者是Windows系统,得到一个DLL文件。将其放入Wizard指示的目录中。

    监听输出配置

    php.ini中增加配置项

    [XDebug]
    ; dll 文件名,如果没有放在指定ext目录中,需要配置完整路径
    zend_extension=php_xdebug-3.1.5-7.3-vc15-nts-x86_64.dll;
    ; 必须开启
    xdebug.remote_enable = 1;
    
    xdebug.remote_autostart = 1;
    
    xdebug.remote_handler=dbgp;
    ; xdebug 寻找的监听地址,Xdebug3 改名,原名称为 remote_host
    xdebug.client_host="127.0.0.1";
    ; xdebug 需要寻找的监听端口
    xdebug.client_port=9001;
    ; for debug
    xdebug.collect_vars = On;
    ; for debug
    xdebug.collect_return = On;
    ; for debug
    xdebug.collect_params = On;
    ; debug mode select
    xdebug.mode = debug;
    ; 本机调试必须开启,Xdebug3新增设置
    xdebug.discover_client_host = On;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    Attention: 此配置文件基于Xdebug3,与老版本不适配,许多配置项为新增配置,另一些经过改名

    配置完成后,去phpinfo下查看插件状态,如果发生问题,也去该处 debug

    在这里插入图片描述

    如果较多在浏览器上debug,建议安装Xdebug Helper插件,方便切换调试模式

    VS Code 插件配置

    安装插件PHP Debug.

    需要在VS Code全局设置中,增加两个配置,以开启本地单文件调试功能

    {
    "php.debug.executablePath": "YOUR_PHP_PATH\\php.exe",
        "php.validate.executablePath": "YOUR_PHP_PATH\\php.exe"
    }
    
    • 1
    • 2
    • 3
    • 4

    可在 Settings -> PHP Debug: Executable Path中转到该设置项。

    随后添加调试配置(必做

    在打开一个PHP文件的条件下,在调试栏选择 Edit in Launch.json。自动添加三个选项,如下所示(也可以另外手动添加三个(添加配置))

    {
    	"version": "0.2.0",
    	"configurations": [
    		
    		{
    			"name": "Listen for Xdebug",
    			"type": "php",
    			"request": "launch",
    			"port": 9001
    		},
    		{
    			"name": "Launch currently open script",
    			"type": "php",
    			"request": "launch",
    			"program": "${file}",
    			"cwd": "${fileDirname}",
    			"port": 0,
    			"runtimeArgs": [
    				"-dxdebug.start_with_request=yes"
    			],
    			"env": {
    				"XDEBUG_MODE": "debug,develop",
    				"XDEBUG_CONFIG": "client_port=${port}"
    			}
    		},
    		{
    			"name": "Launch Built-in web server",
    			"type": "php",
    			"request": "launch",
    			"runtimeArgs": [
    				"-dxdebug.mode=debug",
    				"-dxdebug.start_with_request=yes",
    				"-S",
    				"localhost:9001"
    			],
    			"program": "",
    			"cwd": "${workspaceRoot}",
    			"port": 9001,
    			"serverReadyAction": {
    				"pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
    				"uriFormat": "http://localhost:%s",
    				"action": "openExternally"
    			}
    		}
    	]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • Attention: Listen for Xdebug项的 port 属性,需要与php.ini配置文件中相同,一般这个需要手动修改,其余基本不需要修改

    启动调试

    在PHP文件处下断点,选择Listen for Xdebug,F5开始调试(进入监听状态)

    浏览器访问对应文件,VS Code成功捕获断点

    在这里插入图片描述

  • 相关阅读:
    IO_FILE 与高版本 glibc 中的漏洞利用技巧
    C语言基础-结构体
    专业修图软件 Affinity Photo 2 mac中文版编辑功能
    【人工智能数学基础】几何解释——最小二乘法
    JavaScript--day02学习(简单数据类型/复杂数据类型)
    咖啡价格分析
    Linux打包发布常用命令
    神经网络结构设计,神经网络架构设计
    自动控制原理5.5---闭环系统的频域性能指标
    Reids存储邮箱验证码
  • 原文地址:https://blog.csdn.net/Zheng__Huang/article/details/126452990