xdebug远程调试原理分析

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。
  如果运用
Eclipse PDT,你可以不用关心这些参数,Eclipse将会为你完成
这些疑问

Xdebug断点调试的工作原理详解

http://www.softown.cn/post/117.html

时间: 2024-08-06 03:45:12

xdebug远程调试原理分析的相关文章

PhpStorm XDebug 远程调试

现在我们自己公司的各种开发和测试服务器,都是使用阿里云的服务器.一些PHP的项目,无法在本地搭建完整的环境,在外网服务器上调试更方便定位问题.发现网上没有完整的关于如何配置PHPStorm和XDebug远程调试的资料,自己配置的过程遇到一些问题,写出来给大家做一个参考. 演示环境 本地开发环境:Mac Pro + PHPStorm 9.0 服务器的环境:Ubuntu 14 LTS + PHP 5.5 + XDebug 2.2.3 不管是Windows还是其它的Linux的版本,具体的配置差不多,

XDEBUG 远程调试

我的PHP环境是安装在虚拟机中.真机系统用的是windows.那么我要用XDEBUG调试代码,就得用XDEBUG的远程调试功能. 首先要给远程环境中安装XDEBUG扩展,具体方法:http://www.cnblogs.com/mysic/p/5993463.html 在配置XDEBUG之前,需要先了解下XDEBUG的工作模式,尤其是远程debug时的方式,XDEBUG是需要先和开发端建立连接,启动会话,然后通过相互间传递参数来实现的..XDEBUG远程调试分两种,一种是单用户,一种是多用户.单用

Java远程调试原理与运用

Java远程调试的原理是两个VM之间通过debug协议进行通信,然后以达到远程调试的目的.两者之间可以通过socket进行通信. 首先被debug程序的虚拟机在启动时要开启debug模式,启动debug监听程序. java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n zhc_application zhc_application是main程序,server=y表示是监听其他debugclient端的请

PhpStorm+xdebug远程调试Linux机器上的代码

一.背景介绍: 最近在了解网址导航项目,为了能够更加深入地了解被测对象,所以我选择了查看网址导航代码的方式进行,但是只是生硬地查看php源代码是比较生涩的,我希望能够通过IDE工具进行代码单步调试来了解整个网址导航的功能实现. 为了达成以上目的,我选择了phpstorm+xdebug来远程调试Linux上的代码.与之前白松分享的phpstorm+xdebug调试方法不同的是,前者调试的Webserver是在本地环境搭建了php+apache调试的,而我要面对的问题有: 1.网址导航的代码是部署在

phpStorm配置xdebug远程调试

安装xdebug 下载xdebug可到 xdebug官网 下载与自己PHP版本对应的xdebug扩展 安装 [root] # cd /usr/local/src [root] # tar zxvf xdebug-2.6.0RC2.tgz [root] # cd xdebug-2.6.0RC2 [root] # /usr/local/php/bin/phpize [root] # ./configure --enable-xdebug --with-php-config=/usr/local/ph

NetBeans配置Xdebug 远程调试PHP

1.配置PHP 说明:xdebug.trace_output_dir和xdebug.profiler_output_dir需要增加权限 #chmod 755 /usr/xdebug-tmp xdebug.remote_host是本机IP,xdebug.remote_port是远程linux中xdebug开启的端口,需要注意防火墙需要打开.   重启php-fpm # killall php-fpm #  /etc/init.d/php-fpm 查看phpinfo一定有xdebug的扩展才说明安装

在主机中通过xdebug远程调试Vagrant虚拟机中drush脚本的方法

改方法是调试drush所执行的php代码的方法,同样适用于普通的cli方式运行的php程序的调试. 1.首先需要调整cli方式的xdebug.ini配置: sudo vi /etc/php5/cli/conf.d/xdebug.ini [XDebug] zend_extension="/usr/lib/php5/modules/xdebug.so" xdebug.coverage_enable=0 xdebug.default_enable=0 xdebug.remote_enable

xdebug远程调试Vagrant虚拟机中web程序的注意点

主要的一点: xdebug.remote_connect_back=0 这里xdebug.remote_connect_back=1将会使xdebug.remote_host的设置无效,从而无法debug.虽然xdebug.remote_connect_back=1,官方说明是自动检测浏览器的IP地址,然后自动连接到相应的客户端,但在vagrant中似乎工作不正确,我猜测可能是client端有多个IP造成的.所以这里还是手工指定比较稳妥.

使用phpstorm和xdebug实现远程调试

使用phpstorm和xdebug实现远程调试 2012-05-23 10:06:35 vs的断点调试功能很强大有木有,能查看所有变量有木有.php调试很麻烦有木有,echo,var_dump写得你想吐了有木有.想体验一下ide调试的快感吗?那就来使用xdebug吧. 1.原理:xdebug是一款php调试插件,支持远程调试,就是在php文件运行的时候,能通过tcp协议,来发送调试信息到远程端口,ide在收到调试信息的时候,可以向xdebug发送单步运行,中止运行,运行等命令.这样就实现了vs那