@原文url:http://www.cnblogs.com/dcb3688/p/4608015.html

@netbeans官方调试php代码说明:https://netbeans.org/kb/docs/php/debugging_zh_CN.html

  个人认为,对有有经验的程序员,使用echo、print_r()、print_f()、var_dump()等函数足以调试php代码,如果你不喜欢这样的话,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_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir ="D:\phpStudy\tmp\xdebug"
xdebug.trace_output_dir ="D:\phpStudy\tmp\xdebug"
xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
zend_extension="D:\phpStudy\php\php-5.3.29-nts\ext\php_xdebug.dll"
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9001  //这里配置为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引擎的扩展

    所以 正确的方法是

    zend_extension=php_xdebug-2.4.1-7.0-vc14-nts.dll

    在php.ini 中还要设置

    output_buffering = Off

 

  

  三,配置NetBeans

    在NetBeans的 工具-选项-php 中配置(NetBeans版本8.2)

    1,工具-选项-常规,web浏览器设置为Firefox,无代理,然后测试连接。

    2,工具-选项-php-常规,php5解释器选择php.exe路径(例如:D:\phpStudy\php\php-5.3.29-nts\php.exe)

    3,工具-选项-php-调试器端口(9001,和上边php.ini保持一致),会话ID:netbeans-xdebug(和上边php.ini中的xdebug.idekey保持一致

    

    在这里面也有个

    就是调试器端口, 网上一般都是9000,但是有没有考虑用Nginx的感受,在用nginx作为服务器代理的时候,nginx一般使用的就是9000

    这就是为什么我们在配置php的xdebug时候使用9001端口, (php.ini 中的端口要与NetBeans中的调试器端口一致)

    会话ID 与 xdebug.idekey 保持一致

    不然同样提示:等待NetBeans连接xdebug

 

  四,最好重启下netbeans,再开始调试。

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

 

  五,开始调试

  ---注意,只有在netbeans中新建的项目,才可以进行调试。并且进行了如下配置的。

  

  ---选择默认的本地web站点即可

  

  ---新建完成导入后,打开项目

  打开项目,然后选择 菜单-调试-调试项目,一般会在默认浏览器中弹出http://localhost/weiqing/index.php?XDEBUG_SESSION_START=netbeans-xdebug,后边红色参数是xdebug参数,必须要有。  

  !!!重点!!!如果想单独调试某个url页面,在页面后面加上这个参数?XDEBUG_SESSION_START=netbeans-xdebug或者& XDEBUG_SESSION_START=netbeans-xdebug,然后打开就能开始调试了。

  1,经常用到的就是F7(步入,逐行执行脚本,一行一行的调试代码),F5(继续,跳的代码比较多),ctrl+F7(步出,跳出当前函数或者类),具体可以参考官方文档。

  ---使用调试器工具栏

  

  2,在下边可以监视变量的值,和断点数量。

  

 

@注意问题

  1,调试过程中,有时候中间会报错(套接字异常等),跳出调试。所以调试过程中,在重要地方设置断点,这样即使跳出了,也可以重新调试并快速调试到设置断点地方。

  2,有时候会出现等待连接netbeans xdebug或者NetBeans-xdebug正在连接情况,重启下netbeans即可解决。

posted on 2017-01-05 13:51  学到老死  阅读(14051)  评论(1编辑  收藏  举报