首页 > 编程语言 >php断点调试工具------NetBeans+Xdebug调试php方法(测试成功)

php断点调试工具------NetBeans+Xdebug调试php方法(测试成功)

时间:2022-08-20 16:13:58浏览次数:107  
标签:xdebug netbeans NetBeans ini php 断点 调试

@原文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即可解决。

 

https://www.cnblogs.com/feichengwulai/articles/6252039.html

标签:xdebug,netbeans,NetBeans,ini,php,断点,调试
From: https://www.cnblogs.com/jmbt/p/16607927.html

相关文章

  • netbeans for php常用快捷键
     https://www.cnblogs.com/onephp/p/5378158.html文本编辑复制当前行到上一行/下一行ctl+shf+up移动当前行到上一行/下一行shf+alt+left/right/down/up删除当前行ct......
  • 解决goland在mac m1下无法调试问题
     背景新电脑macm1goland调试抛出异常   异常信息第一次异常信息couldnotlaunchprocess:cannotrununderRosetta,checkthattheinstalledbuildo......
  • 代码审计-PHP反序列化漏洞
    什么是序列化序列化可以实现将对象压缩并格式化,方便数据的传输和存储。为什么要序列化?PHP文件在执行结束时会把对象销毁,如果下次要引用这个对象的话就很麻烦,所以就有......
  • PHP爬虫(2)DOM处理
    https://www.cnblogs.com/jbexploit/p/4592527.html摘要:在PHP爬虫(1)中详细了介绍了CURL抓取HTML数据的技术。采集数据处理也是爬虫技术中非常重要的部分。处理HTML数据可......
  • 如何严格设置php中session过期时间
    https://www.cnblogs.com/YangJieCheng/p/7268378.html如何严格限制session在30分钟后过期!1.设置客户端cookie的lifetime为30分钟;2.设置session的最大存活周期也为30分......
  • php file_exists 检查文件或目录是否存在
    https://www.cnblogs.com/haven/archive/2012/10/24/2737140.html在我们一般正常情况下使用file_exists检查文件或目录是否存在是没有问题了,但要注意一个是安全模式和......
  • php 去掉字符串的最后一个字符
    在一个站长的空间看到这样的文章,觉得会有用,先记录下来原字符串1,2,3,4,5,6,去掉最后一个字符",",最终结果为1,2,3,4,5,6 代码如下: $str = "1,2,3,4,5,6,"; $newstr......
  • php 图片添加文字水印 以及 图片合成(微信快码传播)
    1、图片添加文字水印:12345678910111213141516171819202122232425262728293031$bigImgPath = 'backgroud.png';    $img......
  • 移动端H5调试基础
    适用场景此文档描述场景适用于Android机型及Chrome内核的浏览器参考文档ChromeDeveloper开发文档链接(需要梯子)https://developer.chrome.com/docs/devtools/remote-de......
  • docker搭建phpswoole实现http服务
    一、创建DockerfileFROMphpswoole/swoole#COPY./www//var/www/二、同级目录下创建docker-composer.yamlservices:phpswoole-server:container_name:p......