参考链接:https://blog.youkuaiyun.com/21aspnet/article/details/54808850
安装 Xdebug 模块
- 复制 phpinfo() 输出的的所有内容;
- 粘贴到 https://xdebug.org/wizard.php 的文本域内;
- 点击按钮
Analyse my phpinfo() output。 - 系统会推荐一套安装方案,下载推荐的 .dll 放到
php\ext目录, - 最后在
php.ini新增行(首行根据实际情况编辑):
[Xdebug]
zend_extension = e:\xampp\php\ext\php_xdebug-2.6.0-7.2-vc15.dll
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "C:\Users\Administrator\Desktop\tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = on
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.trace_output_dir = "C:\Users\Administrator\Desktop\tmp"
xdebug.idekey = PHPSTROM
- 重启 php 服务。
使用 Xdebug 调试
- 进入 PhpStorm,勾选
View->ToolBar; - 点击
Run/Edit Configurations...,点击加号+,选择PHP Web Applicatoins(Page)创建调试,Name的值随便,对于Server的值,点击旁边的...按钮浏览,点击加号+新增,Name的值随便,Host输入要测试的主机域名(例如localhost),Port端口号默认是80,Debugger选择Xdebug,点击确定。 Start Url填写要测试的地址,Bowser选择调试用的浏览器,点击确定。- 在程序中打断点(快捷键
F9)。 - 点击工具栏上的开始调试按钮(瓢虫样式的按钮),程序将走到断点处暂停运行,此时可以观测代码区域内各个变量的值。
- 可以自己选中变量拖入右下方的 watches 进行特别观察,也可以在那里输入变量名添加要观察的变量。
- 关于调试按钮的快捷键,如想设置成 Visual Studio 的模式,可以到
View/Quick Switch Scheme/Keymap选择Visual Studio。 - 如果断点无效,查看浏览器控制台
Application/Cookies/(网址)中的键值对,按浏览器地址栏中的XDEBUG_SESSION_START的值,新增键值对:XDEBUG_SESSION->13228,之后刷新重试。
Xdebug 工作原理
参考文档:https://blog.youkuaiyun.com/wang740209668/article/details/50588557
- xdebug 可以控制 PHP 程序的执行,这意味着 xdebug 可以在任何时候暂停或者恢复正在运行的 PHP 程序。
- 当 PHP 程序被暂停的时候,xdebug 可以获取到程序的相关信息,比如变量的值等。
- xdebug 也可以修改一个变量的值,然后再恢复暂停的程序,让其继续运行。
- xdebug 配合 IDE 进行可视化调试的过程(类似于 Visual Studio 单步调试)被称为“远程调试”,是因为调试时有一个 Server(xdebug) 和一个 Client(IDE),所以在调试的时候,被调试的 PHP 程序和调试 PHP 程序的 IDE 可以不在同一台电脑上。
- xdebug 在进行远程调试的时候扮演一个 Server 的角色,它会在一个指定的端口(默认是9000)等待 IDE 的连接。目前有2种通信的协议,GDB 和 DBGp,其中 DBGp 是 DBG 的取代协议。
- IDE 在执行调试的时候,给 xdebug 发送需要执行的命令,xdebug 接受到命令后执行,然后将执行的情况和获得的 PHP 程序运行信息返回给IDE。现在很多 IDE 都实现了与 xdebug 通信的协议,比如 Eclipse PDT。
- Xdebug远程调试有2种方式:
- req:在 PHP 程序开始执行的时候,xdebug 与 IDE 建立连接。
- jit:在 PHP 程序执行到断点处或者遇到 Error 的时候,xdebug 才与 IDE 建立连接。
- 开启 xdebug 远程调试需要通过 GET, POST 或是 cookie 的方式传入一个
XDEBUG_SESSION_START变量,XDEBUG_SESSION_START变量的值代表一个 session 的名称。通过这种形式,xdebug 可以分辨出不同的 session。如果要结束一个 session 可以通过同样的形式传入一个XDEBUG_SESSION_STOP。
本文详细介绍Xdebug的安装步骤及配置方法,并提供在PhpStorm中进行远程调试的具体操作流程,帮助开发者有效利用Xdebug进行PHP程序调试。
2473

被折叠的 条评论
为什么被折叠?



