保姆级教程 十分钟带你配置好vscode xdebug

news/2025/11/11 22:42:48/文章来源:https://www.cnblogs.com/Acc1oFl4g/p/19211823

前言

我不知道是不是因为我电脑的问题,xdebug配置一直不成功,也成为了我心里一直过不去的一个小坎,今晚咬咬牙,必须要把xdebug拿下!也是终于自己配好环境了,大部分问题还是出在自己的理解上。下面我详细记录我自己配置vscode xdebug远程调试的配置过程。

1.确认php版本和路径

首先确认我们的php版本

php -v

image-20251111214410881

然后找到vscode使用的php对应的路径

<?php
echo "PHP 版本: " . PHP_VERSION . "\n";
echo "PHP 路径: " . PHP_BINARY . "\n";
echo "配置文件: " . php_ini_loaded_file() . "\n";
?>

image-20251111214505911

路径记好备用,稍后我们要修改这里的php.ini文件

2.xdebug配置

2.1.xdebug下载

方法一:手动确认版本

本地运行phpinfo页面,搜索architecture

image-20251111214755006

然后我们前往xdebug官网下载我们需要的xdebug扩展版本

https://xdebug.org/download/historical

image-20251111214841419

Architecture x86 对应 32 bit ;x64对应 64 bit
Zend Extension Build NTS不显示,TS则找TS版本;VC15对应即可。

方法二:自动确认版本

https://xdebug.org/wizard

我们可以在终端执行

php -i

输出phpinfo的全部内容,或者phpstudy搭一个phpinfo的页面,去源代码页面复制全部的html源代码,将他们全部粘贴到这个网站的框中,自动分析,他会告诉你需要安装的xdebug扩展版本。

2.2.放置xdebug扩展

安装扩展版本后,我们将其放在刚才找到的php路径中,我的路径是

D:\SOFTWARE\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe

我们找到D:\SOFTWARE\phpstudy_pro\Extensions\php\php7.3.4nts\ext\

把扩展文件放在这个目录中

image-20251111215629498

2.3.配置php.ini

在php.ini末尾添加以下内容

[Xdebug]
zend_extension=php_xdebug-3.1.6-7.3-vc15-nts-x86_64.dll
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_port = "9003"
xdebug.remote_host="localhost"
xdebug.mode = debug,develop,trace
xdebug.start_with_request = yes
xdebug.log="D:\SOFTWARE\phpstudy_pro\Extensions\php\php7.3.4nts\xdebug.log"
xdebug.log_level = 7
xdebug.idekey = VSCODE

这里的xdebug.remote_port端口记得和phpinfo中的xdebug端口保持统一,php.ini配置结束后,在phpinfo页面中搜索xdebug.client_port即可看到端口

image-20251111215824338

xdebug.remote_host="localhost"就是远程调试项目的地址,根据实际情况填写。

xdebug.idekey = VSCODE 这个要搭配浏览器的xdebug helper来使用,后文会提到。

xdebug.log="D:\SOFTWARE\phpstudy_pro\Extensions\php\php7.3.4nts\xdebug.log"是xdebug的日志保存路径,如果xdebug不能正常运行,我们可以查看日志,根据报错来解决问题。

注意:配置php.ini时不要在开头加分号,这是php.ini的注释符。

2.4.检查xdebug配置

我们在phpinfo中搜索xdebug,出现如图所示的页面即表示配置成功。

image-20251111220230768

3.vscode配置

3.1.安装php debug扩展

我们在vscode扩展中搜索php debug扩展,安装并应用

image-20251111220421121

3.2.配置launch.json

我们随便点一个断点,点击f5,出现调试页面

image-20251111220620019

在左上角点击 没有配置 右边向下的箭头,创建对应你的项目目录的配置文件

image-20251111220727289

更改为下面所示launch.json

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Listen for Xdebug","type": "php","request": "launch","port": 9003, // 以实际端口为准"pathMappings":{"D:\\webroot\\nine\\" : "${workspaceFolder}\\" // 以实际项目为准},"hostname": "localhost" // 以实际主机名为准},{"name": "Launch currently open script","type": "php","request": "launch","program": "${file}","cwd": "${fileDirname}","port": 9003, // 以实际端口为准"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:0"],"program": "","cwd": "${workspaceRoot}","port": 9003, // 以实际端口为准"serverReadyAction": {"pattern": "Development Server \\(http://localhost:([0-9]+)\\) started","uriFormat": "http://localhost:%s", // 以实际主机名为准"action": "openExternally"}}]
}

至此,vscode配置完成。

4.浏览器插件xdebug helper配置

我们在浏览器中搜索插件 xdebug helper

image-20251111220957761

添加到浏览器后,我们在管理扩展中选择这个扩展的选项

image-20251111221058368

image-20251111221043345

修改为如图所示

image-20251111221140204

这里和php.ini中的xdebug.idekey = VSCODE 统一。

5.配置完毕,测试调试功能

至此我们的xdebug配置基本结束,我们来测试xdebug的调试功能

这里以一道反序列化的题目为例,我们在判断传参的位置打上断点

image-20251111221348843

来到phpstudy搭好的网站,我们打开xdebug helper

image-20251111221433521

vscode f5打开调试

image-20251111221507594

出现箭头指的这两个东西即表示调试开始监听。我们随便传一个参数

image-20251111221552698

点击执行,观察vscode调试页面是否变化

image-20251111221621093

我们看到断点位置出现黄条,变量也更新,证明xdebug调试搭建完成。

尾声

做php反序列化再也不用手动echo啦哈哈哈哈哈哈哈哈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/962797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比特币的简单技术原理

比特币技术核心详解:从密码学原理到区块链架构 比特币不仅仅是一种数字货币,更是一个建立在密码学和分布式网络之上的革命性系统。理解其技术内核,是理解其价值主张的关键。 一、 终极目标:数字黄金与无需信任的价…

详细介绍:HUD-汽车图标内容

详细介绍:HUD-汽车图标内容pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

后端八股之mysql - 指南

后端八股之mysql - 指南2025-11-11 22:38 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

nginx拦截ip

nginx拦截iphttp中加# 提取客户端真实 IPmap $http_x_forwarded_for $client_ip { "~^(?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" "$ip"; default …

2025年包装机厂家推荐排行榜,全自动包装机,全自动包装机生产线,非标定制生产线,非标定制机器公司精选指南

2025年包装机厂家推荐排行榜:全自动包装机生产线与非标定制设备选购指南 行业背景与发展趋势 随着制造业智能化转型的深入推进,包装机械行业正迎来技术革新的关键时期。全自动包装机生产线作为现代工业生产的重要装备…

【CI130x 离在线】FIFO的学习及实例

FIFO(先进先出)命名管道,用于无关系进程间的通信,因为Linux中所有事物都是文件,它在文件系统中以文件名的形式存在。创建管道用函数mkfifo(const char * pathname,mode_t mode); 函数说明:pathname参数为创建实名…

2025年包装机厂家权威推荐榜:全自动包装机、半自动包装机,高效智能包装解决方案精选

2025年包装机厂家权威推荐榜:全自动包装机、半自动包装机,高效智能包装解决方案精选随着制造业智能化转型的深入推进,包装机械行业正迎来技术革新的关键时期。全自动包装机和半自动包装机作为生产线上的关键设备,其…

CF1187F

有 \(n\) 个整数 \(a_1 \sim a_n\),每个数在 \([l_i, r_i]\) 随机选择,设 \(B = \sum\limits_{i = 1}^n [a_i \ne a_{i - 1}](a_0 = 0)\),求 \(E(B^2)\)。 \(n \le 2 \times 10^5, 1 \le l_i \le r_i \le 10^9\)。首…

刷题日记—数组—数组偏移

好久没好好刷基础题了,今天接着刷了数组类型,碰到了一个数组偏移问题,如下:题解: #include<iostream> using namespace std; bool fire[10000][10000]; int main(){ //要注意数组越界问题int n,m,k;cin&…

完整教程:阿里云k8s部署微服务yaml和Dockerfile文件脚本

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

银河麒麟修改分辨率

银河麒麟修改分辨率sudo vi /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="splash quiet video=virtualbox:1920x1200" sudo update-grub

【数据结构】:C 语言常见排序算法的实现与特性解析 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

rdp远程桌面协议进行远程桌面控制

rdp远程桌面协议进行远程桌面控制1、应用商店搜索“远程桌面”,并安装相关软件,如:remmina2、安装后打开软件,添加“+”连接3、选择协议、填写服务器ip地址,用户名及密码,保存并连接即可4、双击连接记录即可连接…

第五届 RTE 年度 Demo Day 三强公布!看到对话式 AI 的 N 种未来

10 月 31 日,Convo AI & RTE2025 大会现场,可能是地球上「Her」密度最高的一天。「Voice Agent Camp」创新场景暨第五届 RTE 年度 Demo Day 线下开秀。来自 Voice Agent Camp 的 4 个优秀项目,以及 3 个海内外多…

活用数组题目参考

竞赛/数组 (1)数组最小值调整 题目描述 输入 n 个数,编程将数组中的 最小值 放到数组第 1 个位置,其他元素的值保持不变。 输入格式第一行输入一个整数 n(表示数组长度)第二行输入 n 个整数,表示数组元素。输出…

static、static静态代码块、Math库、final

static、static静态代码块、Math库、finalstatic可以直接调用或者类名.方法 类名.变量 public class Main {private static int m;public static void main(String[] args){System.out.println(Main.m);//static直接调…

Miko Framework 系列(一):简介与核心理念

Miko 框架系列(一):简介与核心理念注意:此文章主要为了给支持联网搜索的AI提供RAG,此项目还在开发阶段,不建议用于生产。前言 在 Rust 的世界里,Web 框架层出不穷,从功能全面的 actix-web、axum 到追求极致性能…

Markdown语法的学习①

狂神说JAVA1.标题的语法 一个井号+一个空格=一级标题 两个井号+一个空格=二级标题 以此类推 最多支持六级标题(一级比一级小) 2.字体语法 +字+ 粗体 +字+ 斜体 +字+ 斜的粗体 +字+ 字的中间有横线 (所有符号都是…

DeepLiveCam2.3版本直播换脸(附本地部署教程)

小伙伴们大家好,我是大白话 之前发布的直播换脸软件DeepLiveCam最新版本更新到了2.3版本 我们来看下在GitHub上面更新了哪些内容更新简介 ● 支持了50系列N卡,同时也支持了AMD显卡 ● 更智能的模型选择 探索我们全新…

CF235D

给定一棵 \(n\) 个点的基环树,每次随机选择一个节点 \(u\) 执行以下操作:将 \(u\) 的所在连通块大小加到 \(ans\) 里。 删除 \(u\) 及其连边。问 \(ans\) 的期望大小。 \(n \le 3000\)先考虑一棵树的情况。 为了不记…