PHP调试器的使用

PhpStorm本地断点调试的方法步骤 php代码在调试时,经常是print_r或者var_dump来断点,但是当项目较为复杂的情况下,这么做效率就非常低下了,断点调试就非常好的解决了这个问题,这篇文章主要介绍了PhpStorm本地断点调试的方法步骤,感兴趣的小伙伴们可以参考一下 立即下载

> 工欲善其事必先利其器,学习一门新语言,调试器的使用必不可少,本文分享一下PHP调试器的使用。

PHP目前有两种流行的调试器,

我在学习和研究过程中,发现网上的各种信息过于凌乱,感到痛苦,影响理解和使用。今天我以Xdebug为例,先解释其基本的工作原理,再说明生产过程中如何使用,希望能带给大家清晰易懂的知识。

Xdebug

Xdebug是一个PHP扩展,它采用DBGp协议,提供了对PHP进行Debugging和Profiling的能力。

Debug信息包含:

  • stack and function traces in error messages with:
    1. full parameter display for user defined functions
    2. function name, file name and line indications
    3. support for member functions
  • memory allocation
  • protection for infinite recursions

此外,Xdebug还提供以下功能:

  • profiling information for PHP scripts
  • code coverage analysis
  • capabilities to debug your scripts interactively with a debugger front-end

今天只讨论Debug,其它功能以后有机会再分享。

Debug原理

原文参考:https://xdebug.org/docs/remote

简单来说,XDebug调试是一种C/S结构,Client是PHP-Xdebug插件,Server是我们的IDE(或者各种Editor插件),中间通过DBGp协议通信。PHP脚本在运行时,由Xdebug插件向IDE发起连接,将调试信息发送给IDE,并通过DBGp协议进行互动。

看下图,就明白了:

xdebug运行结构

  • The IP of the server is 10.0.1.2 with HTTP on port 80
  • The IDE is on IP 10.0.1.42, so xdebug.remote_host is set to 10.0.1.42
  • The IDE listens on port 9000, so xdebug.remote_port is set to 9000
  • The HTTP request is started on the machine running the IDE
  • Xdebug connects to 10.0.1.42:9000
  • Debugging runs, HTTP Response provided

以上是单人模式,在php.ini中配置了IDE的IP地址以及监听的端口。这种模式的缺陷是配死了IDE目标,不能支持多用户调试。所以Xdebug还提供了一种多用户的调试模式,这种模式无需配置remote_host,而是配置xdebug.remote_connect_back=On,Xdebug会记下来访地址,作为调试时的连接目标。调试过程如下:

xdebug运行结构

  • The IP of the server is 10.0.1.2 with HTTP on port 80
  • The IDE is on an unknown IP, so xdebug.remote_connect_back is set to 1
  • The IDE listens on port 9000, so xdebug.remote_port is set to 9000
  • The HTTP request is made, Xdebug detects the IP addres from the HTTP headers
  • Xdebug connects to the detected IP (10.0.1.42) on port 9000
  • Debugging runs, HTTP Response provided

搞明白了原理,那我们就开始实践吧。

安装Xdebug

根据各自不同的工作站平台,参考官方安装指导.

安装的时候注意一下输出信息,记下安装好的扩展包位置,下一步配置PHP时会用到。

配置PHP-Xdebug

打开php.ini(不知道php.ini在哪里的,可以输出phpinfo()看看),然后加上对Xdebug扩展的配置:

[Xdebug]
zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so"
xdebug.remote_enable=On

xdebug.remote_enable=On,表示打开远程调试开关,这是必须的。

然后,有两种方法可以验证一下插件是否加载成功:

  1. 命令行执行php -v,看看

    pic

  2. 网页输出phpinfo()

    pic

以上输出若能看到Xdebug版本信息,就ok了。另外,在phpinfo中,可以看到xdebug的配置信息,搜搜看,这些配置都是可以在php.ini中进行修改的,各自代表的意思大家可以查官网,这里就不详述了。

phpinfo

配置IDE

以PHPStorm为例,PHPStorm实现了DBGp协议,我们需要配置它监听的端口,这个端口号需要与xdebug.remote_port一致,才能确保调试时PHP-Xdebug能连上IDE。

以下是默认配置,如果没有冲突可以不用改。在帮其他同学trouble shooting时,发现php-fpm和xdebug默认都使用9000号端口,真是一个奇怪的配置啊,难道他们俩不应该经常被同时使用吗?如果你发现自己的debug不能正常工作,不妨检查一下这一点,将他们调整为不同的端口。

pic

开始Debug

之前说过,IDE是作为一个Server的角色监听特定端口,等待Xdebug来连接,对于PHPStorm开启监听非常简单,直接点击右上角的“小电话”按钮:

pic

变成

pic

然后在代码里面打下断点。

接下来,开始运行并调试代码。针对不同类型的应用,方法也不一样。但目的都是相同的,就是要告诉PHP-Xdebug,我要开始调试了,给我把调试信息发过来!

Web App

两种方法:

  1. 在请求的URL地址后面加一个QueryString:XDEBUG_SESSION_START=session_name(当然用POST参数也可以),这样PHP-Xdebug就会知道该连接IDE调试了。

    其实IDE提供了快捷的操作方式,不用你手动写URL参数。见Debugging PHP Web Applications with Run Debug Configurations,简单来说,就是你需要配置好Web Server,PHP Web Application,再点击后上角的“小瓢虫”按钮,IDE就会自动打开浏览器,帮你输好网址,并添加QueryString:XDEBUG_SESSION_START=session_name。

  2. 安装浏览器插件,插件会在你请求一个PHP页面时,带上一个XDEBUG_SESSION Cookie,这样就不用在URL上带参数了。

    支持的插件:

试试以上两种方法,断点命中!开始享受调试。

Console

一般用在命令行程序或者单元测试的调试中。

我们需要通过设置环境变量XDEBUG_CONFIG来通知Xdebug进行调试。当然,我们可以向这个环境变量中添加更多的设置来配置Xdebug(这些配置都可以在php.ini中进行设置)。

export XDEBUG_CONFIG="idekey=session_name"
php myscript.php

断点命中!

不想调试了,释放掉这个环境变量。

unset XDEBUG_CONFIG

小技巧,如果你用Zsh,可以为上述两段小代码设置别名。

alias xdebug-on="export XDEBUG_CONFIG=\"idekey=PHPSTORM\""
alias xdebug-off="unset XDEBUG_CONFIG"

PHPStorm也提供了快捷的操作,见Debugging PHP CLI scripts with PhpStorm

基于python的奥运会历史数据分析【120年】 数据分析实战案例 阅读详情

相关推荐

UWB定位原理详细介绍

Hello大家好我是小智,今天我来给大家介绍下超宽带的定位原理,首先我们来讲下什么是UWB技术。 超宽带(Ultra Wide Band)简称UWB,和我们熟悉的WIFI、蓝牙技术一样属于通信技术的一种,UWB是一种无线载波通信技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,其所占的频谱范围很宽,右图是一种典型的正弦载波信号图。 UWB这种技术有什么特点呢? UWB系统结构实现简单;2.具有高速的数据传输能力;3.功耗低;4.安全性高;5.多径分辨能力强;6.可用于精确定位等特点。 UWB.

qq_35699674的博客 2万+

php有debugger,Php Debugger可以在终端中运行,方便您调试代码

What is Dephpugger?Dephpugger (read depugger) is an open source lib to make a debug in php direct in terminal, without necessary configure an IDE. The dephpugger run in Php Built in Server usi...

weixin_30844407的博客 267

告别里程焦虑:手把手教你用MATLAB/Simulink仿真电动车AMT换挡规律(附代码)

本文详细介绍了如何使用MATLAB/Simulink仿真电动车AMT换挡规律,帮助解决里程焦虑问题。通过搭建完整的仿真系统,包括电机MAP图处理、Stateflow逻辑实现和动力性与经济性换挡曲线生成,优化电动车换挡策略以提升续航与性能。附带的代码示例和实用技巧使开发者能够快速上手并验证仿真结果。

weixin_26757925的博客 306

php debugger,使用 phpdbg 来调试php程序

PHPDBG是一个PHP的SAPI模块,可以在不用修改代码和不影响性能的情况下控制PHP的运行环境可以在PHP5.4和之上版本中使用。在PHP5.6和之上版本将内部集成功能单步调试灵活的下断点方式(类方法、函数、文件:行、内存地址、opcode)可直接调用php的eval可以查看当前执行的代码用户空间API(userland/user space)方便集成支持指定php配置文件JIT全局变量rea...

weixin_39629188的博客 447

UE5热更新(通过Pak包加载关卡资源,并添加到流关卡)

请先阅读我上一篇文章)**

xialuhui的博客 6456

ARM功耗管理之功耗状态及功耗模式

思考:功耗状态?功耗模式?Core&Cluster&Device&SoC如何映射?

AI-安全-功耗 782

debugger php,什么是PHP调试器(PHP Debugger)?

PHP调试器是一种软件程序,用于评估PHP代码的语法和逻辑错误,以使PHP脚本编写器能够更高效地工作。存在许多这样的调试器,它们在质量、成本和复杂性方面各不相同。有些程序在一个完整的集成开发环境(IDE)中使用多种复杂的开...PHP调试器是一种软件程序,用于评估PHP代码的语法和逻辑错误,以使PHP脚本编写器能够更高效地工作。存在许多这样的调试器,它们在质量、成本和复杂性方面各不相同。有些程序在...

weixin_36242382的博客 653

基于 51 单片机的智能手势控制小车设计与实现

智能手势控制小车以STC89C52RC 单片机为控制核心,通过手势识别模块采集用户手势指令,经单片机处理后驱动电机执行前进、后退、左转、右转等动作。该项目融合了传感器技术、单片机编程和电机驱动技术,具有成本低、易实现、互动性强的特点,适合作为嵌入式系统入门实践案例。本项目成功实现了基于 51 单片机的智能手势控制小车,通过 APDS-9960 模块采集手势信号,经单片机处理后驱动电机完成基本动作,验证了 “传感器 + 单片机 + 执行器” 的嵌入式系统设计思路。

weixin_42300449的博客 178

php代码调试工具 ai写作

关键在这儿:针对不同场景下的需求,我们可以灵活运用上述提到的各种PHP代码调试工具。无论是为了提高开发效率还是增强产品质量,合理利用这些资源都将大有裨益。希望每位读者都能从中找到最适合自己的解决方案,并在未来的编程道路上越走越远!

x3088的博客 958

DTI-ALPS处理笔记

前段时间刚好学习了一下DTI-ALPS处理(diffusion tensor image analysis along the perivascular space ),记录一下,以便后续学习。ALPS是2017年发表在《Japanese Journal of Radiology》的一篇文章首次提出的 (),主要用于无创评估脑内淋巴系统功能的衡量数值。C图和D图中的蓝色部分是投射纤维,绿色部分是联合纤维,红色部分是皮下纤维。

weixin_52073820的博客 4789

【第07例】IPD体系进阶: 6 个技术评审点(TR)

TR技术评审点

产品线负责人 4415

PHP调试工具使用指南

PHP调试工具使用指南 项目基础介绍 本项目PHP Debug是一个用于辅助PHP开发的调试工具,主要目的是通过提供调试功能来增强PHP开发者的开发效率和代码质量。它使用了常见的PHP语言开发,借助于此工具,开发者可以更加方便地进行代码调试,包括断点设置、变量查看、步骤执行等。 主要编程语言 项目主要使用了PHP语言进行开发,可能还涉及了JavaScript(如果项目包含任何前端部分)、HTML(...

gitblog_00517的博客 709

Android性能分析——hprof文件分析(一)

hprof  文件是 Java 堆转储文件(Heap Dump File)的标准格式,用于保存 Java 虚拟机(JVM)在某个时间点的内存快照。这种文件对于分析内存泄漏、内存使用情况和对象分配模式非常有用。

小旭的专栏 1877

跨平台PHP调试器设计及使用方法——高阶封装

        在《跨平台PHP调试器设计及使用方法——协议解析》一文中介绍了如何将pydbgp返回的数据转换成我们需要的数据。我们使用该问中的接口已经可以构建一个简单的调试器。但是由于pydbgp存在的一些问题,以及调试器需要的一些高级功能,我们还需要对这些接口进行组合和封装。(转载请指明出于breaksoftware的csdn博客)         首先我们需要做的便是一个简单的状态机。在前...

方亮的专栏 1299

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

跨平台PHP调试器设计及使用方法——立项

        作为一个闲不住且希望一直能挑战自己的人,我总是在琢磨能做点什么。自从今年初开始接触PHP,我也总想能在这个领域内产生点贡献。那能做点什么呢?我经常看到很多phper说自己设计了一个什么框架,或者说自己搭建了一个什么系统。虽然这些对自己来说算是一种历练,但是这些对更多的人来说可能并没太多帮助。而我希望我能做的是可以帮助到更多人的东西。于是就有了标题中这个项目的立项。(转载请指明出于b...

方亮的专栏 1431

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

PHP调试器Xdebug安装

PHP调试器Xdebug安装

荣耀之路 557

系统安装php环境_搭建PHP开发环境步骤(四)——安装XDebug调试器

为了便于在浏览器或集成环境中开发、调试PHP,需要对PHP安装调试器,这里我们选择XDebug调试器1、下载XDebugXDebug下载地址如下:https://xdebug.org/download.phpXDebug也有很多版本,这里下载Xdebug 2.4.0下的PHP 5.5 VC11 TS (64 bit)版(下载后为一个DLL文件,如:php_xdebug-2.4.0-5.5-vc11...

weixin_33891343的博客 156

php coder pro 调试,开发自己的API调试器(php版本)

php版调试器代码

weixin_39527078的博客 130

APD 高级 PHP 调试器

简介 APD 是 Advanced PHP Debugger,即高级 PHP 调试器。是用来给 PHP 代码提供规划与纠错的能力,以及提供了显示整个堆栈追踪的能力。APD 支持交互式纠错,但默认是将数据写入跟踪文件。它还提供了基于事件的日志,因此不同级别的信息(包括函数调用,参数传递,计时等)可以对个别的脚本打开或关闭。 Caution APD 是一个 Zend 扩展库,修改了 PHP 内部...

m0_37477061的博客 496

opensuse安装php5,在OpenSUSE 11.3上安装PHP5调试器

在OpenSUSE 11.3上安装PHP5调试器本教程将介绍如何在OpenSUSE 11.3上安装php5调试器(xdebug)。我想你已经通过zypper或yast安装了Apache2和PHP5包。 如果没有,请运行:zypperinstall php5 apache2 apache2-mod_php5我使用xdebug的原因是,据我所知,xdebug支持php 5.3或更高版本。我有以下安装环...

weixin_29589063的博客 196

跨平台PHP调试器设计及使用方法——探索和设计

        在《跨平台PHP调试器设计及使用方法——立项》一文中,我确定了使用xdebug作为调试器插件部分的基础组件。xdebug提供了一个远程调试的功能(相关资料可以详见https://xdebug.org/docs/remote),我们这个项目便是基于这个功能实现的。(转载请指明出于breaksoftware的csdn博客)         远程调试是基于网络传输方式进行交互的一种调试...

方亮的专栏 2029

跨平台PHP调试器设计及使用方法——界面设计和实现

        一个优秀的交互设计往往会影响一个产品的命运。在设计这款调试器时,我一直在构思这款调试器该长什么样子。简单、好用是我设计的原则,于是在《跨平台PHP调试器设计及使用方法——立项》一文中,我给出了一个Demo。之后实现的效果也与之变化并不大。(转载请指明出于breaksoftware的csdn博客)         在《跨平台PHP调试器设计及使用方法——立项》一文中,我阐述了该款调...

方亮的专栏 2031

跨平台PHP调试器设计及使用方法——协议解析

        在《跨平台PHP调试器设计及使用方法——探索和设计》一文中,我介绍了将使用pydbgp作为和Xdebug的通信库,并让pydbgp以(孙)子进程的方式存在。《跨平台PHP调试器设计及使用方法——通信》解决了和pydbgp通信的问题,本文将讲解和pydbgp通信协议的问题。(转载请指明出于breaksoftware的csdn博客)         和Xdebug的通信协议不同,和p...

方亮的专栏 1527

xdebug php 调试器的安装和使用

为什么80%的码农都做不了架构师?>>> ...

weixin_33785108的博客 185

跨平台PHP调试器设计及使用方法——通信

        首先引用《跨平台PHP调试器设计及使用方法——探索和设计》中的结构图(转载请指明出于breaksoftware的csdn博客)         本文要介绍的是我们逻辑和pydbgp通信的实现(图中红框内内容)。         设计通信之前,我需要先设计一种通信协议,其实就是一个数据打包和解包的协议。因为我们的数据非常简单,所以只是用“”长度+数据“”的结构。我们规定一个包...

方亮的专栏 1443

phpstorm安装_搭建PHP开发环境步骤(四)——安装XDebug调试器

为了便于在浏览器或集成环境中开发、调试PHP,需要对PHP安装调试器,这里我们选择XDebug调试器1、下载XDebugXDebug下载地址如下:https://xdebug.org/download.phpXDebug也有很多版本,这里下载Xdebug 2.4.0下的PHP 5.5 VC11 TS (64 bit)版(下载后为一个DLL文件,如:php_xdebug-2.4.0-5.5-vc11...

weixin_39877504的博客 329

在osx中的sublime中安装php的xdebug调试器

我的操作系统是OSX 10.9.5 ,sublime是 Sublime Text 2,我打算在自己的sublime中安装Xdebug调试器,以简便debug程序。 前提当然是你的php已经安装了xdebug扩展。关于php中安装xdebug扩展的相关方面可以参考网上其他资料,挺简单。 首先我们要去sublime的package管理器中install package,然后

qdujunjie的专栏 2898
上一篇: git 使用规范
下一篇: PHP 规范
df007df
博客等级 码龄18年 833粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

df007df

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值