配置部署:
zend_extension="D:wampser3.0wamp64wamp64inphpphp5.6.19zend_extphp_xdebug-2.4.0-5.6-vc11-x86_64.dll"
[xdebug]
xdebug.remote_enable = on
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "D:wampser3.0 mp"
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000 //9000被占用,我用9005端口
; Port number must match debugger port number in NetBeans IDE Tools > Options > PHP
xdebug.remote_handler=dbgp
xdebug.idekey=netbeans-xdebug
5、配置IDE,主要配置为:IDE中的菜单->工具->选项
还有就是对应项目的配置:右击对应的项目,打开项目的属性:
6、以上配置好了,就可以测试下效果了。
Xdebug远程调试原理:
这里是官方的原理解释:https://xdebug.org/docs/remote
英文好的可以访问官网。这里说明下我的理解,以加深记忆。
1、xdebug整个工作过程是你本地IDE与PHP扩展xdebug共同协作的一个过程;
2、在通常情况下是不会触发xdebug的远程调试的。触发方式为:
I、在命令行的环境下,通过配置环境变量来触发;
export XDEBUG_CONFIG="idekey=session_name"php myscript.php
II、通过http请求的get、post带对应参数来触发
XDEBUG_SESSION_START=session_name
这里主要是当php接收到请求的时候xdebug判断请求参数带有xdebug_session,则会在cookie上设置idekey=session_name
III、也可以通过xdebug对应的浏览器插件,帮忙直接在cookie中设置idekey=session_name
3、这里假设我们的调试为http调试,IDE发起调试的时候,通过浏览器访问请求,例如:http://localhost/test.php?XDEBUG_SESSION_START=session_name,并监听9000端口;
4、Xdebug截获到该请求,将设置cookie中idekey=session_name,主动连接remote_ip:remote_port,连接到IDE,跟IDE对话;
对话内容主要为ide告诉xdebug,在哪些文件设置了断点,在执行第一行代码时候要停止,进行下一步操作,进入函数,跳出函数等信息
Xdebug则在程序运行到断点的时候告诉IDE当前在哪里停止和各变量的值等等信息。