netbeans工具使用xdebug断点调试php源码

摘要:
建议使用phpStudy为本地部署准备服务器环境。您可以启动php扩展,而不是单独下载xdebug。如果在使用NetBeans调试PHP时总是提示“等待NetBeans连接到xdebug”,则需要使用命令行检查加载的模块以及xdebug是否正确加载。如果使用phpStudy。当启用xdebug扩展名时,ini配置文件将自动添加此配置。XDEBUG_ SESSION_ START=netbeans XDEBUG。后面的红色参数是xdebug参数,它必须存在。XDEBUG_SSESSION_START=netbeans XDEBUG或&XDEBUG_SESESSION_START=netbeans XDEBUG,然后打开它开始调试。

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

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

netbeans工具使用xdebug断点调试php源码第1张
配置以下三处
一、配置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

netbeans工具使用xdebug断点调试php源码第2张 

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

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

netbeans工具使用xdebug断点调试php源码第4张

当提示: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保持一致)    

netbeans工具使用xdebug断点调试php源码第5张  

在这里面也有个坑,就是调试器端口,网上一般都是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源码第6张

netbeans工具使用xdebug断点调试php源码第7张

参考文章:
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日

免责声明:文章转载自《netbeans工具使用xdebug断点调试php源码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇xterm.js的深入学习转:用jupyter notebook打开指定目录下的.ipynb文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【MyBatis源码分析】Configuration加载(上篇)

config.xml解析为org.w3c.dom.Document 本文首先来简单看一下MyBatis中将config.xml解析为org.w3c.dom.Document的流程,代码为上文的这部分: 1 static { 2 try { 3 reader = Resources.getResourceAsReader("myb...

12.tomcat7切换tomcat8导致cookie异常

一、现象 换成Tomcat8后出现cookie报错 二、分析 经异常去查看源码发现,Tomcat8对cookie校验规则改变,更为严格的校验了cookieHeader不允许有, 日志中的[XXXXX,XXXX]被当做异常处理。 三、解决方案 1.该异常不影响系统运行,可以注意打印cookie的格式 2.编写现有类,代替原有cookie处理类(此方法经常用来...

百度开源分布式id生成器uid-generator源码剖析

百度uid-generator源码 https://github.com/baidu/uid-generator snowflake算法 uid-generator是基于Twitter开源的snowflake算法实现的。 snowflake将long的64位分为了3部分,时间戳、工作机器id和序列号,位数分配如下。 其中,时间戳部分的时间单位一般为毫秒。...

CodeIgniter 的数据安全过滤全解析

http://justcoding.iteye.com/blog/546880 CodeIgniter 的数据安全过滤全解析博客分类: Codeigniter / CakePHP MySQLSQLPHP 由于对CI的SQL安全这些不放心,今天寡人啃了一下午的代码,算是对其机制比较了解了,为了让各位兄弟姐妹少走弯路,特将战果公布,希望大家喜欢。 1.无...

eclipse导入redis的源码

import--c/c++ Executable  选择编译后的so文件。这样就导入工程了。 可以在eclipse直接修改c代码,重新编译后就能看到效果了。 重新编译:   1:make clean   2:make CFLAGS='-g -O0' 表示代码编译的时候不进行优化。...

phpstudy下安装phalcon

网上好多都是用xampp或者wamp安装的phalcon,我本地装的是phpstudy,所以今天给大家说下phpstudy安装phalcon 首先,去下载php_phalcon.dll文件,下的时候看下自己的php的版本以及是x86还是x64的系统,怎么看呢,看下面的截图你就知道了 无非就是新建个php文件 输入 echo phpinfo()就可以了 下载...