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\tmp\xdebug"
xdebug.trace_output_dir="D:\phpStudy\tmp\xdebug"
zend_extension="D:\phpStudy\php\php-5.6.27-nts\ext\php_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)
- 工具-选项-php-常规,php5解释器选择php.exe路径(例如:D:\phpStudy\php\php-5.6.27-nts\php.exe)
- 工具-选项-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源码的更多相关文章
- eclipse无法断点调试JDK源码的问题
最近换了新版的eclipse,在jdk源码里面,打断点发现无法进入源码调试,程序直接跳过,已查资料发现自己eclipse配置的是jre环境的. 此处要配成jdk目录才有效 打开preferences, ...
- PhpStorm使用之 —— Xdebug断点调试
PhpStorm使用之 -- Xdebug断点调试 在<XAMPP的配置与使用>中已经阐述了Xdebug插件的配置,Xdebug配置完成后,只需要在IDE工具中进行相关设置,便可启动Xde ...
- Zend Studio集成Xdebug断点调试详解
转自:http://www.softown.cn/post/115.html Xdebug是PHP开发中两个常用的断点调试工具之一(另一个为Zend Debugger). 现在,我们在Zend Stu ...
- PHPstudy + phpstrom +xdebug 断点调试(windows) - CSDN博客
原文:PHPstudy + phpstrom +xdebug 断点调试(windows) - CSDN博客 php.ini 配置 需要添加如下内容 [XDebug]xdebug.profiler_ou ...
- Android动态方式破解apk进阶篇(IDA调试so源码)
一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...
- Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)
一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk 主要采用的是静态方式,步骤也很简单,首先使用 ...
- 使用VS2012调试ReactOS源码
目录 一 下载并安装VS2012 二 下载并安装WDK80 三 下载ReactOS0315源码 四 下载并安装RosBE211 五 用RosBE命令行编译ReactOS源码 六 用VS2012编译nt ...
- VS2010下调试.NET源码
微软走向开源,是时候用vs去单步调试进入源码了.参考地址:http://blog.csdn.net/waxgourd0/article/details/6600182 可供参考的文章:https:// ...
- 查看和调试Qt源码
简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...
随机推荐
- hdfs命令大全
hdfs常用命令: 第一部分:hdfs文件系统命令 第一类:文件路径增删改查系列: hdfs dfs -mkdir dir 创建文件夹 hdfs dfs -rmr dir 删除文件夹dir hdf ...
- PHP处理表单数据的一个安全回顾(记录教训)
曾经看过一个安全文章中写过这么一条 表单输入数据要做 htmlspecialchars_decode 表单输出数据要做htmlspecialchars 当时还不是很理解为什么,自己也没遇到问题,所以就 ...
- spring-boot rabbitMq 完整项目搭建,包括创建、发送、监听
写在开始 rabbitMq 代码按照三部分介绍 第一部分 交换机和队列的创建 第二部分 消息发送 第三部分 消息监听 第一部分 1 建立queue 2 建立exchange 3 exchange绑定q ...
- Python20-Day04
##########迭代器.生成器和面向过程编程########## 一.迭代器 迭代器是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值: l = [1,2,3] cou ...
- 局域网传输-LED灯搭建局域网:数据传输可达每秒3Gb
一 : LED灯搭建局域网:数据传输可达每秒3Gb 我们之前介绍了利用可见光通讯技术,通过LED灯光实现精准室内定位的例子.实际上,这种灯泡和技术的用途不止于此,比如,它还能进行无线网络传输. 最近, ...
- 王者荣耀交流协会PSP Daily项目Postmortem结果
王者荣耀交流协会PSP Daily项目Postmortem结果 整理:王超 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? PSP D ...
- 第35次Scrum会议(11/23)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文小组照片 二.开会信息 时间:2017/11/23 17:03~17:24,总计21min.地点:东北师 ...
- 【欢迎来怼】 Beta发布事后诸葛亮会议
队名:欢迎来怼 项目名称:博客园Android端APP 小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 ————————————————————————————————————— ...
- DPDK helloworld 源码阅读
在 DPDK Programmer's Guides 中的 EAL 一篇中有一个图可以很清晰地看到一个DPDK的应用程序的大致执行思路: 初始化检查CPU支持.微架构配置等完成后,执行main()函数 ...
- Java面试& HashMap实现原理分析
1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二分查找时间复杂度小,为O( ...