• PHP程序的debug

PHP程序的debug,无论是cli方式还是web方式,都需要使用第三方的debug工具。PHP5.6之前,本身自带的debug功能,仅限于日志输出。

推荐使用免费xdebug。Xdebug作为zend扩展存在。可以在php安装后,通过phpize单独被编译安装。

xdebug的安装有几点注意

  1. 如果不知道下载什么xdebug版本,可以在这里,通过上传phpinfo信息,由系统给出建议:http://xdebug.org/wizard.php
  2. 安装后,php.ini中需要指定的xdebug.so方式,可能因为php版本不同而不同。详情见此:http://xdebug.org/docs/all#configure-php
  3. make install如果安装不成功,可以去modules文件夹下,手动拷贝xdebug.so到1中建议的文件夹下

xdebug的使用有几点注意

  1. 如果需要设置断点和单步跟踪,可以使用xdebug自带的debugclient。位于debugclient文件夹下。安装方法:http://xdebug.org/docs/all#debugclient
  2. xdebug的代码跟踪,都是通过remote debug来完成;debugclient其实是起了一个server用于监听并等待需要debug的请求;所有的断点设置都是通过debugclient去进行的。详细的控制命令,可以参考:http://xdebug.org/docs-dbgp.php
  3. PHP采用debugclient作为server,而不是类似Java的remote debug方式。其原因在于一方面PHP代码不是类似Java编译执行可以直接看到源码,另一方面debugclient可以根据会话设置,来区分对哪些请求才需要进行debug和单步追踪。这对多并发的web应用是非常有意义的(当然java也可以通过设置条件断点来实现)。参考:http://xdebug.org/docs/all#activate_debugger
  4. 对于cli的php程序进行debug时,需要设置XDEBUG_CONFIG。可以参考:http://stackoverflow.com/questions/13284795/setting-xdebug-breakpoints-solely-in-command-line

关于gdb进行PHP程序的debug,主要用于对zend engine本身、PHP源码和扩展的debug。这也是为什么php源码中自带gdb脚本.gdbinit的原因。

PHP程序z中xdebug工具简要使用方法的更多相关文章

  1. CDR中调和工具的使用方法

    CDR中的调和工具也是一个神奇的工具,和AI中的混合工具类似,可以做出很多好看的形状,下面先看下他的基本操作方法. 要了解CorelDRAW平面设计软件中的cdr调和工具怎么用,首先要知道调和工具的作 ...

  2. 关于我在17号“一个查询任意年份中任意月份的天数”程序编写中的代码&第二种方法!

    PS:下面的代码是我对于17号的练习题的一些新的看法(其实就是从另一个角度思考问题) package day20180917;import java.util.Scanner;//导包public c ...

  3. [转]PhpStorm中如何使用Xdebug工具,入门级操作方法(亲测有效)

    0 前言 网上试过很多方案,有的根本无效,有的是有效一段时间后失效,然而这个方法是一直有效果,所以留底记录一下 1 简介 PhpStorm是一个轻量级且便捷的PHP IDE,其提供的智能代码补全,快速 ...

  4. Eclipse与Android源码中ProGuard工具的使用

    由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的 ...

  5. OpenCV成长之路(3):模仿PhotoShop中魔术棒工具

    本文的主题实际上是图像的颜色空间的转换,借助一个颜色选取程序来说明OpenCV中颜色转换函数的用法以及一些注意事项. 一.几种常见的颜色空间: RGB颜色空间:RGB采用加法混色法,因为它是描述各种“ ...

  6. 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。

    主要掌握String中的方法 char[] toCharArray()           将此字符串转换为一个新的字符数组. int indexOf(String str)           返回 ...

  7. Unity3D中的工具类

    1.时间:Unity提供了Time类,这个类主要用来获取当前的系统时间. Time.time:从游戏开始后开始计时,表示截止目前共运行的游戏时间. Time.deltaTime:获取Update()方 ...

  8. Android应用程序的Activity启动过程简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activ ...

  9. Mac OS平台下应用程序安装包制作工具Packages的使用介绍(补充)

    上一篇:Mac OS平台下应用程序安装包制作工具Packages的使用介绍 补充说明 上一篇文章中介绍了如何使用Packages如何创建mac下的安装包.但是这样制作出来的安装包只能安装到系统的文件路 ...

随机推荐

  1. GCC 4.8.2 编译安装

      https://my.oschina.net/u/728245/blog/184550 摘要: GCC 4.8.2 在 CentOS 6.5 下编译安装小记,遇到一些问题并解决. 以前从没有升级过 ...

  2. MFC资源冲突解决方法

    AFX_MANAGE_STATE(AfxGetStaticModuleState())   先看一个例子: 1.创建一个动态链接到MFC DLL的规则DLL,其内部包含一个对话框资源.指定该对话框ID ...

  3. 生成证书时Distribution下面App Store and Ad Hoc 选项不能选择的原因及解决办法

    出现这个问题的原因是:发布用的证书创建是有数量限制的,仅支持3个,所以把原先不用的证书Revoke掉就可以了

  4. zepto - toggleClass

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. 欲善其事必先利其器---Xcode插件

    Xcode所有的插件都安装在目录~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/ Alcatraz (用于管理xcode插件 ...

  6. NGUI Atlas

    打开 Atlas Maker:NGUI -> Open -> Atlas Maker 新建一个 "Icon Atlas" 生成3个东西:

  7. 转 iOS Core Animation 动画 入门学习(一)基础

    iOS Core Animation 动画 入门学习(一)基础 reference:https://developer.apple.com/library/ios/documentation/Coco ...

  8. Web离线存储的几种方式

    随着HTML5的正式定稿,我们也可以大量使用HTML离线网络应用程序的特性. #1.Application Cache Application Cache 可以很简单让我们的WebApp具有离线的能力 ...

  9. Supervisor – 用于 Unix 系统的进程监控工具

    Supervisor 是一个客户端/服务端模式的系统,使用户能够监视和控制 UNIX 操作系统的进程.Supervisor 为你提供一个地方来启动,停止和监视进程.进程可以单独或成组的形式控制.您还可 ...

  10. Android 学习笔记之AndBase框架学习(六) PullToRefrech 下拉刷新的实现

    PS:Struggle for a better future 学习内容: 1.PullToRefrech下拉刷新的实现...   不得不说AndBase这个开源框架确实是非常的强大..把大部分的东西 ...