远程调试

本文首要介绍怎么样在服务器上用VIM +
XDebug调节和测量检验PHP程序,如今即使有过多介绍如何用Eclipse +
XDebug在开垦职员专业机上调试PHP的稿子,但对于哪些系统的配置VIM +
XDebug依然少之甚少的,何况如今关于VIM设置的篇章都用四个相比较老的插件。这里根本介绍一个新插件DBGPavim,它相对于老的局地插件有超多优势。同不经常候该插件可周详的用于Python程序的调解。其它VIM

Xdebug提醒调节和测验客商端接口与PHP运营相关联。该章节解释什么设置PHP与xdebug,并引入一些客商端。

  • XDebug相对于Eclipse + XDebug也许有众多优势,就要文章叙述。

介绍

兑现原理

永利澳门游戏网站 1

DBGp是调节和测量试验器后台和调节和测量检验器分界面通讯的一种左券,用于两种脚本语言的调养。XDebug是用来调试PHP的DBGp完成。VIM要和XDebug互通,落成PHP的调节和测量检验,必要能够领略DBGp合同,并能发送DBGp指令。DBGPavim正是如此一个插件,它使VIM能够经受DBGp央求,并发送DBGp指令,以高达调解目标。DBGPavim的名字来自DBGp@VIM。

ActiveState提供了用来调节和测量检验Python/Ruby的DBGp实现Komodo Remote Debugging
Package,前面有一节将讲到如何使它和VIM互通,以调解Python。客户将能依此类推出什么调节和测量试验ruby/nodejs等脚本语言。

Xdebug的长间隔调节和测验器允许你检查数据布局,交互作用式地穿过和调度你的代码。该左券已经开放,名为DBGp。该左券在xdebug第22中学完结,并代表旧版GDB雷同左券并不再扶助。

配置XDebug

  1. 安吹嘘Debug能够参照
  2. 编写php.ini,参预以下两行:

    zend_extension=/path/to/xdebug.so
     xdebug.remote_enable=1
    
  3. 编辑你的httpd.conf,参预以下行:

     php_value xdebug.remote_autostart 1
    

只要有多个开拓职员同偶尔间必要调理不一样的VirtualHost,能够在你的VirtualHost段中出席以下行:

 php_value xdebug.remote_port 9009

注:这里的9009正是VIM作为DBGp服务器应当监听的端口,差异的开荒职员在不一致的VirtualHost中用各自区别的端口号。那几个端口号和下一节提到的dbgPavimPort要一致。不加这一行,默许的端口号是9000。
最后可透过phpinfo.php检查你的XDebug配置是不是科学,你无法否够看到以下这么些行的值如下(首固然前两列):

xdebug.remote_autostart  On  Off
 xdebug.remote_enable   On  On
 xdebug.remote_handler  dbgp    dbgp
 xdebug.remote_host 127.0.0.1   127.0.0.1
 xdebug.remote_port 9009    9000

phpinfo.php文件内容如下:

<?php
     phpinfo();
 ?>

客户端

配置VIM + DBGPavim

DBGPavim插件自身是用Python实现的,所以必要您的VIM帮衬Python
2.7。展开你的VIM,输入指令

:version

万一能收看“+python”,表达您的VIM是永葆Python的。
倘若看见的是“-python”,表达您的VIM不支持Python,你能够按如下步骤编译本身的VIM:

  1. 安装Python 2.7
  2. export path=/path/to/python2.7/bin:$PATH
  3. 用以下命令编写翻译VIM:

 ./configure --prefix=/opt/vim --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config
 make
 make install

注:这里的/usr/lib/python2.7/config决定于你把Python2.7设置到何以职位。

从这里或者这里下载DBGPavim,放到你的~/.vim目录下,并编写的你的~/.vimrc,参加以下两行:

let g:dbgPavimPort = 9009
let g:dbgPavimBreakAtEntry = 0

注:这里的9009和上一节的9009要平等,假诺上一节未有布署xdebug.remote_port,这里也无需配置,因为它们都会利用暗中同意的9000。
dbgPavimBreakAtEntry=0告诉VIM不在入口处停下,那样只会在断点处停下。

您能够重新开动VIM,按F5检查你的DBGPavim配置是或不是科学。假诺您安顿成功的话,你会做VIM窗口的右下角见到提示音信如下:

bap-LISN-9009

它表示VIM方今正值监听9009端口,bap表明它只会在断点处停下,其余提醒音信格式如下:

<bae|bap>-<LISN|PENDn|CONN|CLSD>

断点状态

bae Break At Entry,在入口处停下
bap Break only At breakPoints,只在断点处停下

调节和测验器状态

LISN 调试器已启动,正处于监听状态。
PEND-n  调试器已捕捉到连接请求,可以按F5进入调试模式了。
CONN    VIM正处于调试模式中。
CLSD    调试器已停止。

Xdebug2捆绑了贰个接纳DBGp合同轻巧命令行工具。还会有一部分别样客商端都做得很好(无需付费或购买发卖的)。

在Apache情况下调节和测验PHP

  1. 前日确认配置不错后,可以用VIM张开你须要调治将养的文本,跳到您需求调养的行,按F10安装当前进为断点,并按F5运营调节和测验器。
  2. 用浏览器访问会调用相应PHP文件的U库罗德L,你拜会到VIM状态栏里的的提醒音讯变成:

     bap-PEND-1
    

  1. 它报告您曾经有贰个连连被堵住,能够按F5起来调节和测量检验了。永利澳门游戏网站 2
  2. 按F5进去调节和测量试验形式,你拜谒到VIM窗口被分为三局地:左上为源码窗口,右上为变量查看窗口,下方为调用饭店窗口。永利澳门游戏网站 3在源码窗口里,把光标定位到某三个变量上面按F12,在变量查看窗口就能够看出该变量的值,假若该变量不是简轻巧单变量,其成员也会来得出来。如若该变量的某部成员仍不是简约变量,该行前面会产出四个加号,在该行按回车键,该成员的值将被接续张开。假设你想一向查看有些变量的积极分子变量,可以按v切换来visual格局,选中该成员再按F12,举个例子$this->login。在仓房窗口,当你在某一行按回车,将跳到该层。最上面一行是最尾部,最上面一行是最顶层。切换调用仓库的层系,能够扶助你查看种种等级次序的变量,譬如某个全局变量独有在最顶层技术看见。对于源码中从未现身的变量,你能够经过命令:Pg来查阅,比如:

      g $this->memberShip
    

  1. 你能够早先你的调节和测量检验了,随即按F1可调出协助窗口,再一次F1就关闭扶持窗口。永利澳门游戏网站 4
  • Dev-PHP (IDE: Windows)
  • Eclipse plugin (IDE).
  • Emacs plugin (Editor
    Plugin).
  • KDevelop (IDE: Linux (KDE); Open
    Source).
  • ActiveState’s Komodo (IDE:
    Windows, Linux, Mac; Commercial).
  • MacGDBP (Standalone
    client for Mac OS X; Free)
  • NetBeans (IDE: Windows, Linux, Mac
    OS X and Solaris).
  • Notepad++ plugin (Editor:
    Windows).
  • WaterProof’s PHPEdit (IDE,
    from version 2.10: Windows; Commercial).
  • PHPEclipse (Editor Plugin).
  • Devsense’s PHP Tools for Visual
    Studio
     (MS Visual
    Studio Plugin; Commercial).
  • JetBrain’s PhpStorm (IDE;
    Commercial).
  • Protoeditor (Editor:
    Linux).
  • pugdebug (Standalone
    client for Linux, Windows and Mac OS      X; Open Source).
  • VIM plugin (Editor
    Plugin).
  • jcx      software’s VS.Php (MS Visual
    Studio Plugin; Commercial).
  • Xdebug Chrome
    App
     (Chrome
    Application; Open
    Source)
  • XDebugClient (Standalone
    client for Windows).

调解命令行运行的PHP程序

一经您供给调和命令行运行的PHP程序,也急需保险PHP程序端的安装是精确的。这几个设置能够像前边相符在php.ini中设定,也足以经过命令行参数来设定。比方:

php -dxdebug.remote_autostart=1 -dxdebug.remote_port=9009 test.php

假设您的命令行使用的ini和apache中php5_module使用的ini是同样的(经常景况是那样的),你无需在参数中再来做那些设置。但万一你在ini中的设置是坐落某个virtualhost段里,你依然要求加多那几个设置。
你能够通过命令行:

php --ini

来查阅你的下令行用的是哪个ini。

进而你能够选择命令:

php -r "phpinfo();"|grep xdebug.remote_

来检查你的XDebug设置。

中央步骤如下:

  1. 用VIM张开你须求调理的PHP文件,F10设置断点,F5运转调节和测量试验监听。
  2. 从命令行运营php程序如上。
  3. 回到你的VIM窗口,将看见提示消息为PEND-1。
  4. 永利澳门游戏网站,按F5步向调节和测量试验方式。

DBGPavim提供三个:Dp命令简化命令路程序的调养。只需张开你的PHP文件,输入指令:Dp就可以。

用来调节和测量试验的简约命令行工具绑定于xdebug所在的 debugclient 目录中。

调试Python程序

前面说过VIM +
DBGPavim作为DBGp左券的服务器,能够与XDebug协作专业,也得以与ActiveState提供的Komodo
Python Remote Debugging
Client协同专门的学问,达成Python程序的调节和测量检验,具体步骤如下:

  1. 从这里下载安装Komodo
    Python Remote Debugging
    Client,把解压后的bin目录加到你的PATH路线中,注意bin目录下的pydbgp文件。
  2. 用VIM张开你须要调治将养的Python文件,F10安装断点,F5起动调节和测试监听。
  3. 通过pydbgp运维你的Python程序,如

     pydbgp -d 127.0.0.1:9009 test.py
    
    1. 注:这里的9009端口就相当于地方为PHP调节和测量检验时设置的xdebug.remote_port,必要和dbgPavimPort保持一致。
    2. 回到你的VIM窗口,将看到提醒消息为PEND-1。
    3. 按F5进来调节和测量检验情势。

    地方的:Dp命令相仿适用于Python调试,下图为Windows 7下用GVIM +
    pydbgp调节和测验Python的截图。 永利澳门游戏网站 5

    ### VIM + DBGPavim相对于Eclipse + XDebug的优势

    绝大许多服务器不会运维XServer,不只怕在服务器上运行Eclipse。倘若在开辟人士专门的学业机上运行Eclipse +
    XDebug,就一定于把DBGp服务器在做事机上运转,你须求设置路线映射,相当于HTTP
    Server试行的一份代码在服务器上,Eclipse调节和测量试验时张开的是一份代码,在专门的学业机上,要确认保障这两份代码能对应上急需映射路线。当程序层面一点都不大时,难点相当的小,当程序层面大时,会相比较麻烦,况兼要确认保证代码的二只,不然会串行。

    还要能够受到互连网防火墙之类的难题。

    VIM +
    DBGPavim也是支撑远程调节和测量检验的,但相同幸免不了路线映射的安装,如下:

    let g:dbgPavimPathMap = [['D:/works/php','/var/www'],]
    

开端调节和测量检验器

DBGPavim相对于其余插件的优势

DBGPavim源于VIM开始的一段时代的三个DBGp插件

DBGPavim会监听全部来自DBGp顾客端如XDebug、pydbgp的DBGp连接,不像此外插件只好捕获第二个一而再。那对于布满的WEB程序是必得的,因为今日的一回网页加载经常会接触四个HTTP乞请,而我们须求调养的大概来自内部的别样三个。
同时DBGPavim扶助只在断点处停下,别的的插件都以在入口处停下,须求程序员一步步追踪进去。那省了开拓职员相当的大的麻烦,并且制止失误后叁回次的重启调节和测验。

信赖您也早就意识,DBGPavim能够与Windows下的GVIM一同坐班,况且专门的职业的很好。

要使xdebug调节和测量试验器生效,你须求在php.ini配置部分安装。那类设置有xdebug.remote_enable开启调节和测量检验器,xdebug.remote_host和xdebug.remote_port配置IP地址和端口以便调节和测验器连接。还恐怕有xdebug.remote_connect_back设置用于开采服务器分享给多名开拓者使用。

DBGPavim的详细使用参谋

VIM normal模式下

F5   启动调试监听,或者有可调试连接时进入调试模式。
F6  停止调试监听。
F8  切换dbgPavimBreakAtEntry的值,按这个键你可以看到状态栏提示信息在bae和bap之间切换,即是否在PHP程序入口处停下。
F10 在当前行设置或删除断点,在调试模式下同样适用。

调节和测验方式下

F1   打开或关闭帮助窗口
F2  单步进入
F3  单步跳过
F4  单步退出
F5  继续执行直到下一个断点,如果后续没有断点就退出调试模式。
F6  停止调试,这个按键就导致VIM退出调试模式,并且停止调试监听。
F7  调试时执行php语句,按下F7后,用户可在变量查看窗口输入php语句,回车后执行。
F9  最大化某个子窗口,或者重置窗口布局。
F11 查看当前执行环境下的所有变量的值,在不同的堆栈层次,会有不同的结果。
F12 查看光标下的变量的值。

如上作用键为暗许配置,你假使习贯超多浏览器的按钮设置,能够把上边包车型大巴代码参加你的.vimrc中:

let g:dbgPavimKeyRun = '<F8>'
let g:dbgPavimKeyStepOver = '<F10>'
let g:dbgPavimKeyStepInto = '<F11>'
let g:dbgPavimKeyStepOut = '<F12>'
let g:dbgPavimKeyPropertyGet = '<F3>'
let g:dbgPavimKeyContextGet = '<F4>'
let g:dbgPavimKeyToggleBp = '<F9>'
let g:dbgPavimKeyToggleBae = '<F5>'
let g:dbgPavimKeyRelayout = '<F2>'

VIM命令,全部命令唯有首先个字母为大写。

:Bl  列出所有断点
:Bp 与F10功能相同  p   这个命令可用于快速调试当前文件,它实现了如下功能:

    1. 检查命令行下XDebug/pydbgp的设置是否正确
    2. 启动调试器监听
    3. 用php/pydbgp执行当前文件
  g <longfoo> 查看较长变量的值,比如:Pg $this->savings[3]
:Up 调用堆栈往上一级  n  调用堆栈往下一级
:Wc [$foo]  打开/关闭对变量$foo的监视。如果没有参数,就监视当前执行环境下的所有变量。
:We <foo> 打开/关闭对语句foo的监视,即每一单步后自动执行foo语句。
:Wl 列出所有被监视的变量或语句。
:Children <n> 对于数组默认显示前1024个元素,这个命令可以修改。  epth <n> 对于复杂变量,默认只显示下一层成员,这个命令可以设置限制多层。
:Length <n>   对于字符串变量,默认执行显示前1024个字符,这个命令可以设置显示长度。

假定你需求调节和测量试验器在错误爆发时(PHP错误或exception)发起一会话,你也须求退换xdebug.remot_mode设置。该装置允许值是”req”(暗许),中度器会在本子一初始就提倡一会话,或”jit”值让会话值在错误发生时生成。

搞好全部那一个设置后,xdebug仍不能够在本子一运行时自动最先调养会话。你有八个主意激活xdebug调节和测验器:

1、        当在命令行中运转脚本,你必要设置以情形变量:

export XDEBUG_CONFIG="idekey=session_name"

php myscript.php

 

您也能铺排 xdebug.remote_host, xdebug.remote_port, xdebug.remote_mode 和xdebug.remote_handler 为同样的景况变量只要在砍断那个值在三个空中内:

export XDEBUG_CONFIG="idekey=session_name remote_host=localhost profiler_enable=1"

负有安装你都能在php.ini通过XDEBUG_CONFIG设置。

2、       
若是您想在浏览器调节和测量检验脚本,只需求U瑞鹰L增加 XDEBUG_SESSION_START=session_name``参数。要代表GET参数也得以设置XDEBUG_SESSTION_START为POST参数,或是首席实践官KIE参数。实际情况请参照他事他说加以考查下一章节。

3、       
要在浏览器运转PHP并激活调节和测量试验器需安装以下浏览器插件。各类插件都能令你轻易题下开关就拉开调节和测验器。当那个插件激活,它们会直接设置XDEBUG_SESSION的cookie值,代替XDEBUG_SESSION_START。

The easiest Xdebug

Firefox插件具备IDE界面更便于方便调节和测验。插件地址: .

Xdebug Helper for Chrome

Chrome插件只需一键扶植您张开或关闭调节和测量试验。插件地址:.

Xdebug Toggler for Safari

Safari插件能半自动开启Xdebug调节和测验。Github地址: .

Xdebug launcher for Opera

Opera插件允许你敞开一xdebug调节委员会话。

在你运营脚本,你要让您的客户端能接纳调节和测验连接,请参见小说指明客商端需求什么样安插的从头到尾的经过。使用捆绑的轻巧顾客端请参照他事他说加以考查编写翻译和安装一章。你能够用来支行“调试客商端”。

当调节和测量试验客户端运营,它会来得以下音信并听候连接被调剂服务器收到:

Xdebug Simple DBGp client (0.10.0)

Copyright 2002-2007 by Derick Rethans.

– libedit support: enabled

     

发表评论

电子邮件地址不会被公开。 必填项已用*标注