设为首页 收藏本站
查看: 1235|回复: 0

[经验分享] php断点调试工具

[复制链接]

尚未签到

发表于 2017-12-29 12:30:36 | 显示全部楼层 |阅读模式
  @原文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
   DSC0000.png
  意思就是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保持一致)
DSC0001.png

  在这里面也有个
  就是调试器端口, 网上一般都是9000,但是有没有考虑用Nginx的感受,在用nginx作为服务器代理的时候,nginx一般使用的就是9000
  这就是为什么我们在配置php的xdebug时候使用9001端口, (php.ini 中的端口要与NetBeans中的调试器端口一致)
  会话ID 与 xdebug.idekey 保持一致
  不然同样提示:等待NetBeans连接xdebug
  四,最好重启下netbeans,再开始调试。
  配置都保存了之后,还是连接失败的话,就重启一下netbeans吧。很多人都知道,该了PHP.INI要重启服务器。但是没想过netbeans的有些配置改了之后,也要重启才能生效。
  五,开始调试
  ---注意,只有在netbeans中新建的项目,才可以进行调试。并且进行了如下配置的。
DSC0002.jpg

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

  ---新建完成导入后,打开项目
  打开项目,然后选择 菜单-调试-调试项目,一般会在默认浏览器中弹出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(步出,跳出当前函数或者类),具体可以参考官方文档。
  ---使用调试器工具栏
DSC0004.png

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

  @注意问题:
  1,调试过程中,有时候中间会报错(套接字异常等),跳出调试。所以调试过程中,在重要地方设置断点,这样即使跳出了,也可以重新调试并快速调试到设置断点地方。
  2,有时候会出现等待连接netbeans xdebug或者NetBeans-xdebug正在连接情况,重启下netbeans即可解决。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429326-1-1.html 上篇帖子: 一、那些PHP不得不说的事。 下篇帖子: 再谈PHP错误与异常处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表