原文地址:http://www.cnblogs.com/gpcuster/archive/2009/05/29/1491836.html xdebug可以控制php程序的执行,这意味着xdebug可以在任何时候暂停或者恢复正在运行的php程序。当php程序被暂停的时候,xdebug可以获取到程序的相关信息,比如变量的值等。xdebug
原文地址:http://www.cnblogs.com/gpcuster/archive/2009/05/29/1491836.html
xdebug可以控制php程序的执行,这意味着xdebug可以在任何时候暂停或者恢复正在运行的php程序。当php程序被暂停的时候,xdebug可以获取到程序的相关信息,比如变量的值等。xdebug也可以修改一个变量的值,然后再恢复暂停的程序,让其继续运行。
xdebug配合ide进行可视化调试的过程(类似于visualstudio单步调试)被称为“远程调试”,是因为调试时有一个server(xdebug)和一个client(ide),所以在调试的时候,被调试的php程序和调试php程序的ide可以不在同一台电脑上。
xdebug在进行远程调试的时候扮演一个server的角色,它会在一个指定的端口(默认是9000)等待ide的连接。目前有2种通信的协议,gdb和dbgp,其中dbgp是dbg的取代协议。ide在执行调试的时候,给xdebug发送需要执行的命令,xdebug接受到命令后执行,然后将执行的情况和获得的php程序运行信息返回给ide。现在很多ide都实现了与xdebug通信的协议,比如eclipse pdt。
xdebug远程调试有2种方式:
1 req:在php程序开始执行的时候,xdebug与ide建立连接。
2 jit:在php程序执行到断点处或者遇到error的时候,xdebug才与ide建立连接。
开启xdebug远程调试需要通过get, post或是cookie的方式传入一个xdebug_session_start变量,xdebug_session_start变量的值代表一个session的名称。通过这种形式,xdebug可以分辨出不同的session。如果要结束一个session可以通过同样的形式传入一个xdebug_session_stop。
原文地址:[转载]xdebug远程调试原理分析, 感谢原作者分享。