zoukankan      html  css  js  c++  java
  • netbeans工具使用xdebug断点调试php源码

    对有有经验的程序员,使用echo、print_r()、print_f()、var_dump()等函数足以调试php代码,如果需要在IDE工具中使用断点调试,xdebug就是一个非常好的php调试工具。对于不熟悉的代码,可以用Xdebug一步一步的查看请求过程和代码执行过程。

    准备工作
    本地部署的server环境,推荐用phpStudy(内置xdebug),开启php扩展就可以了,不用单独下载xdebug。(下载与php版本对应的xdebug:http://www.xdebug.org)


    配置以下三处
    一、配置php.ini,需注意是否是使用集成环境。找到相应的php.ini,例如下边是phpStudy的php5.3的php.ini,其中黑色部分是系统默认的,红色是手动添加的。

    [XDebug]
    xdebug.profiler_output_dir="D:phpStudy	mpxdebug"
    xdebug.trace_output_dir="D:phpStudy	mpxdebug"
    zend_extension="D:phpStudyphpphp-5.6.27-ntsextphp_xdebug.dll"
    xdebug.remote_enable = 1
    xdebug.remote_mode=req
    ; 注意,remote_host的值如果填写localhost不能用,则填写127.0.0.1
    xdebug.remote_host=127.0.0.1
    ; 注意,端口和idekey要与netbeans中配置一样
    xdebug.remote_port=9001
    xdebug.idekey=netbeans-xdebug

     

    二、重启apache服务器,查看phpinfo()里边是否有xdebug,记录下idekey(我的是netbeans-xdebug)。


    这一步非常重要,因为坑就在这。。。
    如果使用NetBeans调试php时,一直提示“等待NetBeans连接xdebug”,就要使用命令行查看已经加载的模块,查看xdebug是否正确加载。
    在命令行下输入:php -m

    当提示:PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0,意思就是xdebug必须加载到zend modules的扩展中。
    extension意为基于php引擎的扩展,zend_extension意为基于zend引擎的扩展,所以正确的方法是设置php.ini配置文件:zend_extension=php_xdebug-2.4.1-7.0-vc14-nts.dll。如果使用phpStudy,启用xdebug扩展的时候,php.ini配置文件会自动增加这个配置。
    在php.ini 中还要设置:output_buffering = Off
      
    三、配置NetBeans
    在NetBeans的 工具-选项-php 中配置(NetBeans版本8.2)

    1. 工具-选项-php-常规,php5解释器选择php.exe路径(例如:D:phpStudyphpphp-5.6.27-ntsphp.exe)
    2. 工具-选项-php-调试器端口(9001,和上边php.ini保持一致),会话ID:netbeans-xdebug(和上边php.ini中的xdebug.idekey保持一致)    

      

    在这里面也有个坑,就是调试器端口,网上一般都是9000,但是有没有考虑使用Nginx的情况,在用nginx作为服务器代理的时候,nginx一般使用的就是9000端口!这就是为什么我们在配置php的xdebug时候使用9001端口。
            php.ini中的端口和idekey要与NetBeans中的“调试器端口”和“会话ID”保持一致,不然同样提示:“等待NetBeans连接xdebug”!

    四、配置好了之后,重启下netbeans,再开始调试。
      配置都保存了之后,还是连接失败的话,就重启一下netbeans吧。很多都知道,修改了PHP.INI要重启服务器。但是没想过netbeans的有些配置改了之后,也要重启才能生效

    五、开始调试
      打开项目(现有项目,无需新建项目),然后选择 菜单-调试-调试项目,一般会在默认浏览器中弹出http://localhost/index.php?XDEBUG_SESSION_START=netbeans-xdebug,后边红色参数是xdebug参数,必须要有。  
      !!!重点!!!如果想单独调试某个url页面,在页面后面加上这个参数?XDEBUG_SESSION_START=netbeans-xdebug或者& XDEBUG_SESSION_START=netbeans-xdebug,然后打开就能开始调试了。

    参考文章:
    NetBeans配置Xdebug 远程调试PHP (http://blog.csdn.net/21aspnet/article/details/47756651)
    关于netbeans断点调试php的问题 (https://www.oschina.net/question/232352_2209537)
    在 NetBeans IDE 中调试 PHP 源代码 (https://netbeans.org/kb/docs/php/debugging_zh_CN.html)
    使用netbeans进行PHP团队开发和基于xdebug进行多人远程调试 (http://starlight36.com/post/netbeans-use-for-php-team-with-xdebug)
    php断点调试工具--NetBeans+Xdebug调试php方法 (http://www.cnblogs.com/feichengwulai/articles/6252039.html)

    版权声明:本文采用署名-非商业性使用-相同方式共享(CC BY-NC-SA 3.0 CN)国际许可协议进行许可,转载请注明作者及出处。
    本文标题:netbeans工具使用xdebug断点调试php源码
    本文链接:http://www.cnblogs.com/sochishun/p/7455032.html
    本文作者:SoChishun (邮箱:14507247#qq.com | 博客:http://www.cnblogs.com/sochishun/)
    发表日期:2017年8月30日

  • 相关阅读:
    测试工具iometer, iozone, bonnie++
    python 解析properties文件的工具类
    Linux文件系统性能测试工具fdtree和iozone
    python的WEB容器框架
    iozone的介绍与使用
    Python 的 SOAP 实现
    在powerpoint2007里,如何改变模板里的背景图形
    python的接口和抽象类
    决策树算法总结
    C++ 重载、覆盖和隐藏
  • 原文地址:https://www.cnblogs.com/sochishun/p/7455032.html
Copyright © 2011-2022 走看看