长途调试

 百家乐-前端     |      2020-03-24 05:53

本文首要介绍如何在服务器上用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. 设置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    调试器已停止。

Xdebug2捆绑了多少个用到DBGp协议轻便命令行工具。还或许有部分其余客商端都做得很好(免费或商业的)。

在Apache景况下调节和测量试验PHP

  1. 现行反革命承认配置不错后,能够用VIM张开你要求调弄收拾的文书,跳到您需求调治将养的行,按F10安装当前一言一行断点,并按F5开发银行调节和测量试验器。
  2. 用浏览器访谈会调用相应PHP文件的U奔驰G级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