x-debug配置简述 - chunyu
一 x-debug 是什么?
在配置之前,先解决一个问题,x-debug 是什么?我也不查标准答案了,就说说个人理解。
x-debug是一个PHP调试工具,帮助开发者在IDE里面进行代码的断点调试,效果如下:

1.直观显示变量的值,用以辅助判断赋值对不对;
2.追踪代码的执行流程,可以追踪在哪个流程出错了;
3....
二 断点打在哪里?
在没有使用x-debug 的年代,我们喜欢使用echo/var_dump/var_export 来输出调试。而现在使用了x-debug,那么,断点就打在我们想 echo的地方。
三 运行原理
我们需要关注两个地方:客户端IDE、服务端x-debug。客户端就是我们的IDE,打断点的地方,没什么好讲的。服务端以php扩展的形式安装运行。
- 在客户端,我们的IDE会监听一个端口9000(题外话:监听端口就是等待访问的端口)。
- 在服务端,我们会对x-debug进行配置,告诉它客户端在哪里(客户端的IP与监听端口)。
当我们尝试使用x-debug进行调试,服务器接收到请求之后,x-debug就会去连接客户端IDE的监听端口,连接成功之后,双方就开始通信,进行代码调试。步奏分解如下:
1.IDE监听一个端口,9000;
2.用户发起请求,比如刷新浏览器;
3.xdebug主动去连接IDE的9000端口,连接成功后,调试开始。
四 服务端配置
1)首先要安装x-debug
其实就是一个php扩展,该怎么装就怎么装呗。给个例子吧:
yum -y install php-pecl-xdebug
2)配置x-debug
在哪里配?传统一点就在php.ini 后面追加x-debug相关的配置,规范一点就是在 php.d/ 路径下面有一个x-debug相关的配置文件,没有就自己建咯。给个例子:
; Enable xdebug extension module
zend_extension=xdebug.so ; see http://xdebug.org/docs/all_settings ; 是否允许远程终端
xdebug.remote_enable=on ; 选择协议
xdebug.remote_handler=dbgp ; 调试终端主机地址
;xdebug.remote_host=192.168.40.23 ; 不配ip也行,如下设置之后xdebug可以从http请求的头部获取ip地址
xdebug.remote_connect_back=on ; 调试终端主机端口
xdebug.remote_port= ; 这里是调试器的关键字,对应到调试的IDE上面,需不需要就看你的IDE的配置了
;xdebug.idekey=netbeans-xdebug ; 是否开启远程调试自动启动
xdebug.remote_autostart= On ; 是否开启自动跟踪
xdebug.auto_trace= On
3)检验,查看phpinfo()

五 客户端配置
1)PHPStore
PHPStore 的配置及其简单,只需要把右上角的话筒点开就行了,如下

然后,给代码打上断点

接着刷新浏览器,如下

点击 [Accept] 完了之后就可以调试了,另外你也可以自定义配置,如下:

点击图示位置。
2)netbean
点击【工具>选项>PHP>调试】打开如下窗口

netbean 的配置也很简单,不过它的调试却异常麻烦。我们来走一遍
第一步,如图:

第二步,如图:

第三步,如图:

另外,还要注意IDE右下角的状态栏

注意:使用NetBeans进行x-debug 调试,需要在服务器配置xdebug.idekey=netbeans-xdebug
3)eclipse
点击 【Window > Preferences > PHP > Debug > Debuggers】


eclipse的x-debug 配置很简单,调试也很简单。
①只要把 Access remote session 设置为 any,则所有请求都会触发x-debug 调试;
②Access remote session设置为 off,则不启用x-debug 调试;
③Access remote session设置为localhost,则跟NetBeans的效果一样,需要点击调试按钮触发调试;
④Access remote session设置为为prompt跟设置为any差不多,只是每次启动前都要求确认。
把 Access remote session 设置为 any,在浏览器输入正确的网址,调试效果如下:

小结:
1.PHPstore/NetBeans/eclipse,三个IDE 的x-debug使用差别,大概在于Access remote session的处理。
2.我猜测,PHPstore右上角的话筒对应Access remote session的两个状态(off/any);NetBeans就只有localhost状态;eclipse则可以显式设置四种不同的状态。
3.不要三个IDE一起调试,会窜端口的。
4.PHPstore不需要配置,调试也很简单,推荐;NetBeans配置简单,调试麻烦,不推荐;eclipse配置简单,调试也简单,推荐。
5.上面所言,皆为吾之猜测与试验。不保证对错。
x-debug配置简述 - chunyu的更多相关文章
- SNMP 原理及配置简述 net-snmp-utils net-snmp 第2版基于SNMP 群体名(community name) 第3版引入了安全性更高的访问控制方法 SNMP协议操作只有4种 Apache的php_snmp 模块
SNMP 原理及配置简述 net-snmp-utils net-snmp 第2版基于SNMP 群体名(community name) 第3版引入了安全性更高的访问控制方法 SNMP协议操作只有4种 ...
- 转:SNMP 原理及配置简述
SNMP 原理及配置简述 转载 2016年01月13日 16:18:51 随着机器数量的增长,管理员不能像过去那样,一台台机器进行监控.解决问题,而需要借助各方工具进行统一监控和管理.利用SNMP,一 ...
- Eclipse Debug 配置
创建和使用 Debug 配置 Eclipse Debug 配置类似于运行配置但它是用于在调试模式下开启应用. 打开 Debug 配置对话框步骤为:Run > Debug Configuratio ...
- XBOX ONE游戏开发之DEBUG配置(三)
如何DEBUG 首先打开ADK命令提示窗口 输入命令 xbconnect {XBOX主机的IP} * XBOX主机的IP 在XBOX主机的开发者设置中可以看到,会有一个主机IP和一个工具IP 然后打开 ...
- eclipse 在jboss的debug配置(ubuntu系统)
转自:https://blog.csdn.net/iteye_3878/article/details/81695877 由于我在ubuntu下权限设置分开,如 /home/jboss/ (jboss ...
- tomcat 远程debug配置,教你远程调试代码,解决线上故障
IDEA远程DEBUG Tomcat很简单,配置如下: 1.修改tomcat服务器配置 打开tomcat/bin/catalina.sh 在空白处添加如下参数 CATALINA_OPTS=&quo ...
- idea下远程debug配置
一. 背景: 在测试工作中,为方便发现代码中的逻辑问题,尝试使用远程debug模式,在测试过程中走查代码,不仅可以辅助测试减少与开发的沟通成本,更便于了解业务提升测试深度. 二. 配置方式: 1. 调 ...
- Nginx 配置简述
不论是本地开发,还是远程到 Server 开发,还是给提供 demo 给人看效果,我们时常需要对 Nginx 做配置,Nginx 的配置项相当多,如果考虑性能配置起来会比较麻烦.不过,我们往往只是需要 ...
- 【工匠大道】Mac下Java开发环境配置简述
本文地址 原文地址 分享提纲: 1. 下载JDK1.7 2. 配置java_home 3 .安装tomcat 4 .安装eclipse或者myeclipse 5. mysql安装 破解版下载请参考M ...
随机推荐
- URAL1091. Tmutarakan Exams(容斥)
1091 容斥原理 #include <iostream> #include<cstdio> #include<cstring> #include<algor ...
- 【转】PWM占空比和分辨率
占空比是接通时间与周期之比冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同占空比:就是输出的PWM中,高电平保持的时间与该PWM的时钟周期的时间之比,如一个PWM的频率是1000Hz, ...
- 如何向hadoop集群定时提交一个jar作业?
除了使用Hive,Pig来执行一个MapReduce任务,不需要专门的把项目打成jar包,提交执行,或者定时执行,因为Hive,Pig这些开源框架已经,帮我们自动打包上传了. 而有些时候,我们自己手写 ...
- HDU 1317 XYZZY【Bellman_Ford判断正环】
题意:给出n个房间,初始在房间1有100的能量值,每次进入一个房间,能量值可能增加也可能减小,(是点权,不是边权),问能否到达终点的时候能量值还为正 这题自己写的时候wa--wa-- 后来看了题解,还 ...
- VB6 仿.netWinfrom控件 Anchor属性类
vb6中控件没有anchor与dock属性,窗体变大后原来要在resize中调整控件的move属性,否则就面目全非了.网上找到一些调整控件大小的代码,发现并不太适合自己,于是按照思路自己做了一个类似a ...
- python练习程序(c100经典例18)
题目: 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制. def foo(a,n): su ...
- HDU 4766 Network
题意 就是找到一个 位置 使得路由器可以覆盖所有英雄 可以不覆盖主人自己, 找到距离 主人房子最近的位置,距离为多少 没想到 其实是道水题啊!! 分三个情况讨论 第一个情况 如果 ...
- Hadoop学习总结之二:HDFS读写过程解析
一.文件的打开 1.1.客户端 HDFS打开一个文件,需要在客户端调用DistributedFileSystem.open(Path f, int bufferSize),其实现为: public F ...
- 2016第20周四java基础概念
简单的说JDK=JRE+Java编译器.调试器.工具类库等:JRE=JVM(类似于jre目录下的bin)+必要运行的类库(类似于jre目录下的lib) JVM:Java Virtual Mechina ...
- 解析AFNetWorking 网络框架(一)
转:http://blog.csdn.net/andy_jiangbin/article/details/17103041 一直忙于工作,需要资料在网上找到就转发在博客里,今天自己也贡献一点微薄的力量 ...