NetBeans IDE 配置XDebug

配置部署:

zend_extension="D:\wampser3.0\wamp64\wamp64\bin\php\php5.6.19\zend_ext\php_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\tmp"
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整个工作过程是你本地IDEPHP扩展xdebug共同协作的一个过程;

2、在通常情况下是不会触发xdebug的远程调试的。触发方式为:

I、在命令行的环境下,通过配置环境变量来触发;

export XDEBUG_CONFIG="idekey=session_name"php myscript.php

 

II、通过http请求的getpost带对应参数来触发

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当前在哪里停止和各变量的值等等信息。

posted on 2017-03-16 00:26  donaldbase  阅读(275)  评论(0编辑  收藏  举报

导航