当前位置: 首页 > news >正文

Xdebug安装与PhpStorm调试配置

一、Xdebug 介绍

Xdebug 是 PHP 的一个扩展,提供了多种功能以改善 PHP 开发体验。

  • 单步调试:在脚本执行时于集成开发环境(IDE)或编辑器中逐行调试代码的一种方式。
  • PHP 错误报告的改进:改进的 var_dump() 函数,针对提示、警告、错误和异常提供堆栈跟踪,以突出显示导致错误的代码路径。
  • 跟踪:将每个函数调用(包括参数和调用位置)写入磁盘。还包括每个函数中的变量赋值和返回值。资料收集借助可视化工具,让您能够分析 PHP 应用程序的性能并找出瓶颈。
  • 代码覆盖率分析:用于展示在使用 PHPUnit 运行单元测试时,您的代码库中哪些部分被执行。

 

二、安装 Xdebug

1、使用 phpinfo() 输出本地安装的 PHP 信息

image

 

2、复制 phpinfo() 中的所有内容,放入下图文本框中获取合适版本的Xdebug。(地址:https://xdebug.org/wizard)

image

 

3、点击【Analyse my phpinfo() output】按钮后出现下图内容,根据下图中步骤进行安装。

image

 

4、在对应PHP版本的 php.ini 文件底部添加以下配置内容:

[xdebug]
xdebug.idekey="PHPSTORM"
zend_extension="自己php的目录\ext\php_xdebug.dll"
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9111
xdebug.log="自己的日志目录\tmp\xdebug.log"
xdebug.start_with_request=yes

 

三、配置 PhpStorm 使用 Xdebug

1、打开phpstorm -> fiel -> settings

image

 

 

2、选择 PHP 后如下图操作

image

 

3、选择对应的PHP版本和之前下载的Xdebug

image

 

4、在设置页面选择Debug【 phpstorm -> fiel -> settings -> PHP -> Debug 】进行配置:

image

 

5、配置 IDE key,如下图:

image

 

6、配置服务器路径映射【 phpstorm -> fiel -> settings -> PHP -> Servers 】

image

 

四、开始调试

1、调试方法:

  • 启动监听

    在 PhpStorm 的右上角,点击电话图标 image(Start Listening for PHP Debug Connections),让它变成按下状态。

  • 设置断点

    在你的代码中,行号旁边点击一下,设置一个断点(会出现一个红点)。

  • 触发调试

    有两种常用方式让 Xdebug 连接到 PhpStorm:

    • 方法A:使用浏览器扩展(最简单)

      安装 Xdebug Helper 浏览器扩展(支持 Chrome, Firefox, Edge)。

      在浏览器中打开你的项目页面。

      点击浏览器工具栏中的 Xdebug Helper 图标,选择 Debug,图标会变成绿色。

      刷新页面。PhpStorm 会自动捕获到调试连接,并弹出调试窗口,停在你的断点处。

    • 方法B:使用 URL 参数或 Cookie

      在你要调试的页面 URL 后加上参数 ?XDEBUG_SESSION_START=PHPSTORM。

      或者,使用开发者工具(F12)设置一个名为 XDEBUG_SESSION,值为 PHPSTORM 的 Cookie。

      然后访问该 URL。同样会触发调试。

  • 在 PhpStorm 中调试

  一旦触发成功,PhpStorm 会变为调试视图,你可以:

  1. 查看变量:在 Variables 窗口查看所有变量值。
  2. 步进调试:使用 Step Over (F8), Step Into (F7), Step Out (Shift+F8) 等按钮控制执行流程。
  3. 查看调用栈:查看函数调用链。
  4. 计算表达式:动态计算某个表达式的值。

image

 

2、主要快捷键:

快捷键名称作用

image(F8)

Step Over 单步跳过。执行当前行代码,如果该行调用了函数或方法,不会进入其内部,而是将其作为一个整体执行完,然后跳到下一行。用于快速穿越你不关心的函数。

image(F7)

Step Into 单步进入。执行当前行代码,如果该行有函数或方法调用,会进入该函数或方法的内部。这是分析逻辑细节最常用的操作。
Alt+Shift+F7 Force Step Into 强制单步进入。即使是被调用的函数是 PHP 内置函数(如 array_map)或者 Composer 依赖库中的函数,也会强制进入。普通 Step Into 会跳过这些。

image(Shift+F8)

Step Out 单步跳出。当你进入一个函数内部后,使用此操作会直接执行完当前函数的剩余所有代码,并返回到调用这个函数的位置。当你误入一个复杂函数或快速看完核心逻辑后想离开时非常有用。

image(Alt+F9)

Run to Cursor 运行到光标处。让代码一直执行,直到到达你光标所在的那一行。这比设置多个断点再依次跳过更高效。
F9 Resume Program 恢复程序。让代码继续正常运行,直到遇到下一个断点或脚本结束。

image(Ctrl+F2)

Stop 停止。终止当前的调试会话。

相关文章:

Xdebug安装与PhpStorm调试配置

一、Xdebug 介绍 Xdebug 是 PHP 的一个扩展,提供了多种功能以改善 PHP 开发体验。单步调试:在脚本执行时于集成开发环境(IDE)或编辑器中逐行调试代码的一种方式。PHP 错误报告的改进:改进的 var_dump() 函数,针对提示、警告、错误和异常提供堆栈跟踪,以突出显示导致错误…...

vue - 内置指令

Vue3 提供了一系列内置指令,用于简化 DOM 操作和实现常见功能。这些指令以 v- 前缀开头,通常用于模板中,以下是详细分类及解析: 一、核心渲染指令 用于控制元素的渲染逻辑和数据绑定。v-text功能:更新元素的文本内容(相当于 textContent)。示例: <span v-text="…...

东南大学数据库课程02-DataModel数据模型

Data Model 数据模型 目录Data Model 数据模型2.1 Hierarchical Data ModelBasic IdeaHierarchical Data SchemaVirtual Record2.2 Network Data Model2.3 Relational Data ModelBasic Idea相关术语Relation,Tuple,Attribute,Column,DomainPrimary KeyForeign Key, Reference I…...

Torch核心数据结构Tensor(张量)

本文pytorch的入门系列文章第一篇,首先介绍了张量tensor这一基础内容,尤其详细介绍其关键概念自动求导autograd原理及简单应用。1 基本概念 tensor是一个多维数组,类似于NumPy中的ndarray,但tensor可以在GPU上进行高效计算,这是它与ndarray的重要区别之一。它可以表示标量…...

vue - 进阶

响应式: 进阶 customRef() 创建一个自定义的 ref,显式声明对其依赖追踪和更新触发的控制方式。类型 function customRef<T>(factory: CustomRefFactory<T>): Ref<T>type CustomRefFactory<T> = (track: () => void,trigger: () => void ) =>…...

读书笔记:为什么你的数据库有时不用索引?一个关键参数告诉你答案

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学习《Expert Oracle Database Architecture Techniques and…...

MacOS升级15.2后的问题(一):安装第三方下载的软件,提醒文件已损坏

安装第三方下载的软件,提醒文件已损坏解决步骤: 第一步,重启系统,command+r 持续按住,进入恢复模式,打开左上角实用工具-终端,进行禁用SIP操作:1 csrutil disable第二步,Macos隐私安全性,打开允许任何来源指令:1 sudo spctl --master-disable完成后即可看见(任何来…...

Playwright MCP浏览器自动化教程

你是否曾厌倦在编程软件和浏览器之间反复切换,只为了检查AI生成的代码能否正常运行?现在,有了Playwright MCP(Model Context Protocol),你可以直接让AI自己操作浏览器,查看自己写的代码运行效果,并自行修复问题。 本文将手把手教你如何配置和使用Playwright MCP,让AI成…...

故障分析:ORA-00900 修改props$中字符集导致

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。故障分析:ORA-00900 修改props$中字符集导致 某天在一个群里面看到有人…...

Unstable Twin - TryHackMe

Unstable Twin 一、信息收集 使用nmap对网站ip的开放端口进行扫描 nmap -sS -sV -A -Pn 10.10.187.113 开放了22端口和80端口 使用dirsearch扫描一下看看还有没有其他目录 dirsearch -u http://10.10.187.113 -e php,html,txt -t 100这里我访问网站网站显示一片空白课,我以为…...

单片机实现挡位调节

简易挡位调节模块 1、初始化硬件这里就不过多赘述了,去看我之前的帖子,我这篇帖子选择TIM2的1通道PWM的简单应用2、触发方式 (1)中断 I 初始化硬件启用按钮的中断在主函数外写入中断回调函数void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){uint16_t value;__HAL_TIM_SET_CO…...

完整教程:从 WildCard 野卡到 gptplus.plus:一次解决 OpenAI 支付难题的实战复盘,轻松搞定Gpt充值

完整教程:从 WildCard 野卡到 gptplus.plus:一次解决 OpenAI 支付难题的实战复盘,轻松搞定Gpt充值pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…...

阿里 Qoder 新升级,Repo Wiki 支持共享、编辑和导出

Repo Wiki 正式上线新功能:支持 Wiki 共享、编辑和导出。为了让知识更好地在团队中流转,Qoder 提供了 Wiki 共享能力。当用户在本地生成 Wiki 时,会自动在代码库中创建一个专属目录,只需将该目录推送至代码仓库,即可将生成的文档轻松共享给团队成员,实现协作共建。过去两…...

长城杯WriteUp

文曲签学 提示是穿透并且双写,所以直接抓包在后台进行穿透,获得flagEZ_upload exp: 先创建软链接,然后上传shell import tarfile import os from io import BytesIO# Webshell 内容 webshell_content = b<?php @eval($_POST["cmd"]); ?> webshell_name = …...

vite取别名@

在 vite.config.ts 中: import path from "path"; export default defineConfig({// 取别名resolve: {alias: {"@": path.resolve(__dirname, "./src")}} });在 tsconfig.node.json、tsconfig.json 以及 tsconfig.app.json 中:"compilerO…...

JavaScript数据网格方案AG Grid 34.2 发布:更灵活的数据结构、更流畅的大数据交互与全新 UI 体验

JavaScript数据网格方案AG Grid 正式发布 34.2 版本,本次更新为开发者带来了更灵活的数据分组方式、更顺畅的大数据集交互体验,以及更直观的 UI 提示与操作反馈。近日,JavaScript 数据表格方案AG Grid版本,本次更新为开发者带来了更灵活的数据分组方式、更顺畅的大数据集交…...

BOE(京东方)IPC电竞嘉年华盛典圆满收官 第三届无畏杯总决赛引领电竞生态发展热潮

9月12日,BOE IPC电竞嘉年华盛典暨第三届BOE无畏杯《无畏契约》挑战赛总决赛在北京中关村国际创新中心圆满收官,来自大众赛道的“肌肉瞄准”战队最终赢得冠军奖杯。作为BOE(京东方)全球创新伙伴大会2025(BOE IPC2025)中备受瞩目的标杆性活动,本届赛事首次以《无畏契约》全…...

P1886 滑动窗口 /【模板】单调队列

P1886 滑动窗口 /【模板】单调队列做题思路:#include <bits/stdc++.h>using namespace std; #define int long longconst int maxn = 1e6 + 10;int n,k,a[maxn];deque<int> dp; //双端队列,普通队列队尾无法删除 signed main(){ ios::sync_with_stdio(0); cin.t…...

kingbase金仓数据库docker部署完整步骤

使用docker: docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 docker镜像包: 下载地址:https://ww…...

glTF/glb功能、应用和 5 个基本最佳实践

添加图片注释,不超过 140 字(可选) 在 3D 内容重新定义我们在线购物、学习和互动方式的世界中,glTF 文件格式已成为行业标准。glTF(GL 传输格式的缩写)由 Khronos Group(也是 WebGL 和 Vulkan 的幕后黑手)创建的,被设计为“3D 的 JPEG”,以紧凑、高效的方式提供针对 …...

Spotify 音乐ML练习数据集含158 个特征,11

数据概览与特征说明 本 Spotify ML 练习数据集专为机器学习初学者设计,旨在提供端到端的 ML 管道实践资源。原始数据含 24 个特征,经处理后扩展至 158 个工程特征,涵盖 11.4 万 + 首 Spotify 歌曲信息。 ,涵盖流行度评分、音频特征、流派标签、聚类目标及艺术家统计量。 核…...

abc423

AC 6 (ABCDEF), Score 2050, Penalty 97:57(2), Rank 419, Rating 1358→1415(+57)不行了这场 abc 对我太友好了。 B 吃一发罚时是因为忘记判全 0 来着。 D 直接优先队列就可以。 E 一眼莫队感觉 3e5 很能跑就不动脑子往上写了( F 二项式反演秒了,但是把 \(m\) 打成 \(n\) 一…...

AI辅助分析HP DL360 GEN7 服务器安装USB3扩展卡

AI辅助分析HP DL360 GEN7 服务器安装USB3扩展卡背景 之前我们文章写过惠普HP DL360 GEN7服务器扩展显卡,与解决服务器磁盘阵列问题,今天我们尝试增加一块扩展USB3.0的扩展卡。 我们通过AI搜索先调查研究。实践https://metaso.cn/s/rh2BUAQ文档对话原始文档是英文的,我们…...

AI 应用开发,不就是调个接口么?

AI 技术发展日新月异,对程序员的要求也在不断提高。**AI 相关知识不再只是算法工程师需要了解,而是每个程序员都必须掌握的基本技能**。大家好,我是程序员鱼皮。 由于 AI 的流行,很多公司开始搞起了 AI 相关的业务,或者给老项目加个 AI 相关的功能。 这也给开发方向的程序…...

95.费解的开关

95.费解的开关 用枚举的思想,把第一行先枚举了 (通过: for (int op = 0; op < 32; op ++ )for (int i = 0; i < 5; i ++ )if (op >> i & 1)) 根据第i行去trun第i+1行来改变第i行 trun的改变利用了偏移量来简化 #include <iostream> #include <alg…...

最新药物数据集下载:来自Drugs

数据集概述与重要性 在当今医疗健康领域,数据驱动的决策变得越来越重要。药物相关结构化数据集作为连接医药研究与人工智能应用的关键桥梁,为研究人员、数据科学家和医疗从业者提供了宝贵的资源。本数据集从权威医药网站Drugs.com提取并经过严格预处理,包含了丰富的药物信息…...

【VPX361】基于3U VPX总线架构的XCZU47DR射频收发子模块

产品概述 VPX361是一款基于3U VPX总线架构的8路射频收发子模块,板卡采用1片XCZU47DR RFSOC来实现8路射频信号的高速采集、信号生成以及处理,并进行智能目标识别。该板卡的PS端支持1组72位DDR4 SDRAM,PL端支持1组32位DDR4 SDRAM,支持1片32GB EMMC存储单元,支持2片QSPI FLAS…...

自动驾驶ADAS数据集 13万张高清道路车辆识别图像 覆盖多场景智能交通应用 支持目标检测图像识别模型训练与AI视觉算法开发

引言与背景 在自动驾驶、智能交通和车联网等领域,高精度车辆识别是安全决策的前提。无论是面向全自动驾驶,还是日益普及的高级驾驶辅助系统(ADAS),都依赖大量多场景、多车型的标注数据进行模型训练。 然而,现实中存在两个挑战:场景不均衡 ——多数数据集中夜间、雨雾等极…...

Norwood-Hamilton男性脱发分级图像集|2400+张多角度高清头皮图像|涵盖7类脱发诊断标注|适用于AI诊断工具开发、皮肤科研究与植发产品研发|包含5角度标准化拍摄、支持秃顶早期检测

数据集概述 男性脱发(雄激素性脱发)是困扰全球约50%男性的常见皮肤问题,准确诊断和分级对治疗方案的选择至关重要。本数据集针对这一临床需求,系统性地收集了2400多张高质量男性脱发头皮图像,为AI辅助诊断提供了标准化训练资源。 所有图像均从五个标准化角度(前额、顶部、…...

AI生成文本检测数据集:基于不平衡数据集(人类94% vs AI 6%)的高效机器学习模型训练,涵盖ChatGPT、Gemini等LLM生成内容

引言与背景 随着以ChatGPT和Gemini为代表的大型语言模型(LLM)的快速发展,人工智能生成文本(AIGC)已广泛应用于学术研究、内容创作、新闻传播和日常交流等多个领域。这些模型生成的内容流畅度和逼真度极高,不仅显著提升了信息生产效率,同时也带来了学术不端、虚假信息泛滥…...

阶跃星辰开源Step-Video-T2V模型:300亿参数打造高保真视频生成新标杆

阶跃星辰开源Step-Video-T2V模型:300亿参数打造高保真视频生成新标杆 在AI视频生成技术快速发展的当下,国内AI公司阶跃星辰正式宣布开源其最新研发的Step-Video-T2V文生视频模型。这款参数规模高达300亿的大模型能够生成长达204帧的540P高清视频,在多个关键指标上展现出行业…...

多多报销小程序系统详解

1. 概述总结 多多报销是一款基于微擎系统交付的商家运营工具集成小程序,支持微信小程序,采用 PHP5.4、PHP5.5、PHP7.1 开发,源码未加密,属于官方正品。其核心是打造另类商家运营模式,集成多种运营工具,目前主要采用排队返现模式,后续将扩展平台积分模式、每天返现、抽奖…...

第0章 矿卡EBAZ4203爆改zynq开发板介绍和VIVADO的安装

前言 STM32暂时没有感兴趣的点来写了,后续可能会做LVGL的移植和开发,开新坑吧,也是以前工作时玩的板子 由于本人较懒,记录主要是过程,由于zynq的比stm32做的人少很多,资料也少很多,我会简要介绍原理,操作流程主要由图片加少量文字组成一、想法萌发 在查资料时看到有人用…...

德创恋爱话术宝典介绍

1. 概述总结 德创恋爱话术宝典是一款基于微擎系统的应用,微擎系统是一款基于 PHP 开发的开源应用生态系统,主要用于快速搭建微信公众号、小程序等应用,同时支持 Web 系统开发与部署。德创恋爱话术宝典支持无限多开,适用于微信公众号、微信小程序、PC 等类型,支持 PHP7.3。…...

无痕检测是否注册iMessage服务,iMessages数据筛选,iMessage蓝号检测协议

一、实现iMessage蓝号数据筛选的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号…...

机器学习回顾(二)——KNN算法 - 教程

机器学习回顾(二)——KNN算法 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important;…...

利用langchain创建信息检索链对话应用

以下内容有AI生成内容,请注意区分信息检索链 信息检索链三步流程走向图 flowchart TDA[用户输入问题] --> B[第一步: 查询优化]subgraph B [查询优化]B1[原始用户问题] --> B2[LLM分析并优化]B2 --> B3[生成多个搜索查询]endB --> C[第二步: 信息检索]subgraph C …...

不同的.cs文件的命名空间相同

在 .NET(包括 C#)里,“同一个命名空间”完全可以散落在多个 .cs 文件——甚至散落在多个不同的项目/程序集里。不同文件但同一命名空间的类型访问级别受限 → internal 仍互相可见(同一程序集内);public 随便用;private/file 只能在声明文件内。命名空间是“逻辑地址”,…...

MyEMS:开源的力量,如何为企业能源管理带来颠覆性变革?

在能源成本不断上涨和碳中和成为全球共识的今天,高效能源管理已成为企业的核心竞争力。然而,传统能源管理系统往往存在成本高昂、封闭僵化、难以定制等问题,让许多企业望而却步。正是在这样的背景下,MyEMS 作为一款完全开源的能源管理系统,正在以其独特优势重新定义行业标…...

http

上一篇文章 初始化 MCP 环境 & 创建 MCP Server (一) 讲的是如何在 SSE 模式下启动 MCP Server。...

AI招聘机器人制造商Paradox.ai因弱密码泄露数百万求职者数据

安全研究人员发现AI招聘平台Paradox.ai因使用弱密码"123456"导致麦当劳等企业的6400万求职者信息泄露。调查还发现该公司越南开发者的设备感染信息窃取恶意软件,暴露出更多企业内部凭证和认证cookie。弱密码揭露AI招聘机器人制造商Paradox.ai的安全漏洞 安全研究人员…...

完整教程:【Leetcode hot 100】543.二叉树的直径

完整教程:【Leetcode hot 100】543.二叉树的直径pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace…...

Thundbird无法获取自签证书。

对于自建的邮件服务器,使用thundbird访问时,老版本会提示证书风险,但新版本没有提示,导致无法添加新的邮件账户。 方法(转自外网): 原文: In config editor, add network.security.ports.banned.override as a string with a value of "993" Then go to Mana…...

Gitee推出SBOM扫描功能:为开源供应链安全构筑数字防火墙

Gitee推出SBOM扫描功能:为开源供应链安全构筑"数字防火墙" 在开源软件占据现代软件开发90%以上组件的今天,供应链安全已成为行业不可忽视的挑战。Gitee最新推出的SBOM(软件物料清单)扫描功能,正在为开发者提供一套完整的开源组件风险管控方案,这标志着国内代码…...

mysql连表查询,轻松掌握多表数据关联技巧

做过数据库开发的朋友一定遇到过这样的困扰:数据分散在不同的表中,怎样才能一次查询获取完整的关联信息?比如你需要同时获取用户姓名和订单详情,或者既要产品信息又要供应商资料。这时候,连表查询就像一座连接数据孤岛的桥梁,让我们能够高效获取分散在各表中的相关联数据…...

Milvus集群部署

#本次部署其中的组件kafka、minio均为外置 将milvus chart包解压拷贝至某个目录下 编辑helm的values.yaml文件 ## Enable or disable Milvus Cluster mode cluster:enabled: trueimage:all:repository: milvusdb/milvustag: v2.4.1pullPolicy: IfNotPresent## Optionally speci…...

Qt-捕获摄像头画面

Qt-捕获摄像头画面在qt中捕获摄像头画面,在ui界面上添加一个comboBox控件、label标签和一个pushButton按钮,comboBox用于显示摄像头的设备,按钮用于开启摄像头,label用于显示摄像头捕获的画面。 //需要在.pro文件中加上multimedia multimediawidgets QT += core gui …...

选择MyEMS的十大核心优势:为您的企业开启智慧能管新纪元

在纷繁复杂的能源管理解决方案中,企业如何做出最明智的选择?如果您正在寻求一个既能立竿见影降本增效,又能为长期发展构建数字化基座的平台,那么MyEMS无疑是您的绝佳选择。它不仅是一款软件,更是一个强大的能源管理生态系统。以下是选择MyEMS的十大不可抗拒的优势。 一、极…...

通过 kubectl 插件 kubectl-tree 查看API对象层级关系

分享一个开源小工具 kubectl-tree,用于查看 k8s API 对象层级关系。 比如对于无状态应用来讲,可以看到Deployment --> ReplicaSet --> Pod 的构成关系。 采用二进制离线方式安装: 1、下载二进制安装包 wget https://github.com/ahmetb/kubectl-tree/releases/download…...

【Unity 性能优化之路——渲染流程(1)】 - 详解

【Unity 性能优化之路——渲染流程(1)】 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace…...