老法师谈技术 - �PHP单步调试方法(xdebug)

在production环境上面使用单步调试的机会其实不多,但是不妨碍在代码编写阶段,或者代码阅读阶段,单步调试重要性,有时候单步调试一段代码比单纯阅读要效率高很多。

借助于xdebug的库,PHP的单步调试能力非常强大,而且并不依赖于具体客户端,也就是说,无论你是使用PHPStorm或者是Sublime,还是VIM都可以调试PHP程序。鉴于PHP程序都是部署在服务器端,我们这里只讨论remote调试方法。

远程(Remote)调试服务器端PHP程序需要考虑到下面几个方面:

在服务器端,配置xdebug支持remote调试,其实也就是让xdebug发送调试信息到制定地址和端口,

在客户端(你的PC端),配置xdebug服务器,来接受远端(Remote)的调试信息

在客户端映射代码,这样远端的调试信息可以定位到准确的代码位置

无论你是使用何种客户端,都需要考虑上面的三个方面,好下面开始正式的配置信息。

服务器端的xdebug配置

首先需要安装xdebug,这里就不展开了,不同的系统安装方法略有不同。其次,配置xdebug,以ubuntu为例配置文件在(/etc/php7/mods-available/xdebug.ini)

end_extension = "xdebug.so"

xdebug.remote_autostart = 1

xdebug.remote_enable = 1

xdebug.remote_connect_back = 0

xdebug.idekey=PHPSTORM

xdebug.remote_handler = "dbgp"

xdebug.remote_host = 10.0.1.4

xdebug.remote_port = 9000

xdebug.remote_log = "/tmp/xdebug/xdebug_remote.log"

idekey是客户端用来认证xdebug发送过来的信息,所以确保两边配置的要完全一致。remote_host需要填写的是xdebug服务器的地址,在这里也就是你的PC机的地址。remote_log非常有用,发现远程调试不工作的时候,log会告诉你那里出了错。

客户端xdebug配置

Sublime是常用的PHP编辑器,以Sublime举例来说,需要首先安装xdebug插件,最简单的办法就是使用Package Control,具体如何安装这里就不多说了,跟任何其他插件的安装没有任何区别。Sublime的xdebug的配置信息如下:

{

"path_mapping": {

"/WeCenter/" : "/Users/aaa/Mydoc/Code/WeCenter/v319/wecenter-master/"

},

"url": "http://192.168.1.24:30080",

"ide_key": "PHPSTORM",

"port": 9000,

}

配置非常简单,唯一要注意的是path mapping,如果设置错误,中断的同时不能定位到具体的代码。点击Tools\xDebug\Start Debugging之后,在浏览器里面刷新页面的时候,应该可以看到如下界面:

Sublime-xdebug.png

PHPStorm是另外一个广泛使用的PHP开发工具,其配置都是以图形界面的方式进行,我们下面开始一步步的配置:

在Preference\Languages & Frameworks\PHP\Servers:

PhpStorm1.png

在Preference\Languages & Frameworks\PHP\Debug\DBGp Proxy:

ps-2.png

在Preference\Languages & Frameworks\PHP\Debug:

PhpStorm3.png

在Run\Edit Configurations\Defaults\PHP Remote Debug:

PhpStrom4.png

在上述配置都完成了之后,点击Run\Start Listening on PHP Debug Connecting按钮就可以进行单步调试了。

PhpStorm5.png

php远程调试 没有光标,老法师谈技术 - PHP远程单步调试相关推荐

  1. gdb 命令_gdb实用的调试技巧:启动方式、堆栈信息、单步调试

    对于很多开发者来说,开发过程中难免会遇到各种各样的bug, 所以,每个开发者应该考虑如何快速高效定位问题原因,而gdb是linux上很实用的调试工具,熟练掌握其调试技巧,将有助于提高解决问题的效率,也 ...

  2. CodeBlock 基本使用 与 设置断点和单步调试方法 与生活标准普尔图

    CodeBlock 基本使用  与 设置断点和单步调试方法 Degug 操作: 主要是建一个project: 而且project要放在英文目录下面: 程序项目的目录里不能有中文: new projec ...

  3. gdb tui 安装_GDB 单步调试汇编

    之前在看汇编的时候一直是肉眼看GCC -S的结果,缺点是很不直观,无法实时的看到寄存器的值,所以研究了下如何用GDB调试汇编.当然,写这篇文章更重要的一个目的是半年没有写博客了,博客要长草了.^_^ ...

  4. vs单步调试及断点调试基本介绍

    参考博客原址:https://blog.csdn.net/qq_43444947/article/details/104480128 简述:本文面向小萌新简单描述visual studio2019下的 ...

  5. 老司机谈APK瘦身套路-项目优化篇

    老司机谈APK瘦身套路-项目优化篇 在上一篇文章中,老司机带领大家一起学习了图片资源的瘦身套路,收到了很多中学生读者的好评. 想了解的童鞋请点击:blog.csdn.net/mynameishua-  ...

  6. [转载]钟茂森博士出家,净空老法师现场见证出家盛况_huadingjin_新浪博客

    原文地址:钟茂森博士出家,净空老法师现场见证出家盛况 作者:六根清净方成稻 2011年7月15日(农历六月十五)钟茂森博士在香港圆明寺上畅下怀老法师座下剃度,法名"定弘".跟随上净 ...

  7. 老赵谈IL(3):IL可以看到的东西,其实大都也可以用C#来发现

    在上一篇文章中,我们通过一些示例谈论了IL与CLR中的一些特性.IL与C#等高级语言的作用类似,主要用于表示程序的逻辑.由于它同样了解太多CLR中的高级特性,因此它在大部分情况下依旧无法展现出比那些高 ...

  8. autocad不能画图_设计院老司机谈CAD:学习AutoCAD掌握方法技巧更重要

    设计院老司机谈AutoCAD制图,真的是一个不容易的过程,说实话对自己还是很佩服的,当然学习AutoCAD不仅仅有勇气就行,掌握方法技巧更重要. 总是一句话,难就对了!哈哈哈是不是有点扎心~ 事实上就 ...

  9. vivado在远程服务器上完成本地设备的程序烧写和调试(vivado远程调试)

    vivado远程调试 目录 1 概述 2 本地设置 3 远程服务器设置 1 概述 本文用于描述FPGA开发过程中,使用远程服务器时,直接在远程服务器连接到本地设备进行程序的烧写和调试的过程. 即运用场 ...

  10. 树莓派远程4G遥控车教程(二)-相机云台舵机初步调试

    树莓派远程4G遥控车教程(二)-相机云台舵机初步调试 树莓派远程4G遥控车教程(一)-准备工作 树莓派远程4G遥控车教程(三)-摄像头安装及实现局域网实时监控 树莓派远程4G遥控车教程(四)-实时监控 ...

最新文章

  1. SQL点滴24—监测表的变化(转载)
  2. 【SQL Join】两个字段关联到同一个表,如何使用left join
  3. flask对mysql数据库增删改查_Flask学习(三) - Flask-SQLAlchemy对数据库增删改查
  4. 云计算实战系列十一(软件包管理)
  5. ps 毛发 边缘_用PS给老旧黑白照片上色,亲妈级教学,简单实用,轻松搞定!
  6. Android基础学习一(整理,从零开始)
  7. 镁光固态硬盘用什么软件测试寿命,最简单的方法:如何查看SSD可以使用多长时间?固态硬盘寿命测试方法[详细]...
  8. vue组件库开发(npm包发布)
  9. 【01月16日】【精彩电影合集】【10部】【亲测】【Lsyq5647发布】
  10. js中 英文中文混合排序
  11. asp.net知识共享平台
  12. android 适配俄语添加,【技术贴】怎么在手机上添加俄语输入法?,怎样在电脑上打俄语重音?...
  13. How long is the way to the Architect?
  14. 微信网页版web通讯全解析(最新,持续更新,附源码)
  15. 设计模式之路 | 建造者模式
  16. 图片去水印软件分享!这三个好用的软件不能错过!​
  17. Linux命令:ln -s
  18. html密码域的type属性,查看网页黑点密码 将type=password中password修改成为text
  19. 自定义实现乘风破浪的小船
  20. 浅谈 裴蜀定理扩展欧几里得

热门文章

  1. cartographer探秘第四章之代码解析(三) --- scan match
  2. Web Service工作原理及实例
  3. 趣闻|论文不必参考任何文献?看到作者,网友大呼失敬了
  4. Hokuyo‘s first try
  5. Spring Cloud(8):Sleuth和Zipkin的使用
  6. tp5 + 百度编辑器 +七牛云存储的实现办法
  7. 说一说javascript跨域和jsonp
  8. 1到20的阶乘倒数之和
  9. POJ 3414 Pots【BFS水】
  10. 【Tensorflow2】语义分割实战1---斑马线识别