新蒲京200.c软件下载-app官网网址 > 工具建设 >

并且近年来有关VIM设置的稿子都用一个相比较老的插件

正文首要介绍怎么着在服务器上用VIM + XDebug调试PHP程序,近些日子纵然有为数不少介绍怎么样用Eclipse + XDebug在开荒人士职业机上调节和测量检验PHP的篇章,但对此怎么系统的安插VIM + XDebug如故超少的,何况近期关于VIM设置的篇章都用叁个比较老的插件。这里首要介绍一个新插件DBGPavim,它相对于老的一对插件有不菲优势。同有时候该插件可周到的用来Python程序的调理。其余VIM

  • 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

  1. 设置XDebug能够仿效
  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    调试器已停止。

在Apache意况下调试PHP

  1. 前几日肯定配置不错后,能够用VIM展开你须求调弄收拾的文件,跳到你供给调和的行,按F10设置当前作为断点,并按F5运转调节和测验器。
  2. 用浏览器访谈会调用相应PHP文件的U陆风X8L,你会见到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

调整命令行运转的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就能够。

调试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一齐专门的工作,而且专业的很好。

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个字符,这个命令可以设置显示长度。
下一篇:没有了