xdebug & VIM 调试 PHP 代码

编写过 C/C++ 等编译型语言的同学都应该会有过这样的调试代码的经历,在可疑的代码行中打一个断点,然后观察相关的变量状态,单步调试,检查程序执行的流程是否和自己设计的一样。

这样才是调试代码的正确打开方式,可是 PHP 这种解析型的语言却没有类似的调试方式,不过幸好有 Xdubug 。Xdebug 是一个开放源代码的 PHP 程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。在本文中,主要介绍下在 VIM 编辑器中使用 Xdebug 的跟踪调试功能。

安装 xdebug

官方安装文档说明:https://xdebug.org/docs/install

方法和安装一般的 PHP 扩展一样

  1. 先到官网下载和当前 PHP 版本匹配的扩展包
  2. $  wget https://xdebug.org/files/xdebug-2.5.5.tgz 
  3. 将扩展包解压
  4. $  tar -zxvf xdebug-2.5.5.tgz
  5. 到扩展包里面执行 phpize 命令
  6. $ cd xdebug-2.5.5/
    $ phpize --with-php-config=path/to/php-config
  7. 运行检查工作环境的程序 .configure
  8. $  ./configure  --enable-xdebug  
  9. 编译程序
  10. $  make 
  11. 安装程序
  12. $  make install 
  13. 配置 php.ini 配置文件
  14. 在文件 php.php 的最后,添加下面内容
    zend_extension=xdebug.so

安装 VIM 插件 debugger

下载 VIM 插件,将下载到的文件放到 ~/.vim 目录下即可。这里是一个关于该插件的说明,当你的插件不工作时,可以去阅读下,或许能够解决你的问题。

关于这个插件的安装,在这里还是多啰嗦一下吧。

根据刚才给出的链接,可以下载到一个 VIM 的插件 debugger 的压缩包(debugger.zip)。将它解压,会得到一个 debugger/plugin 的文件夹;里面有两个文件,分别是 debugger.py 和 debugger.vim 。只需要将文件夹 plugin 文件夹复制到 ~/.vim 目录下即可。

注意:
debuger 插件需要用到 VIM 的 python2 的支持,如果 VIM 没有 python2 的支持,该插件是不会有反应的!
可以参考这篇文章,检查你的 VIM 是否支持 python2 。

xdebug & vim 的配置

安装完扩展与插件之后,还需要一些必要的配置才能让它们相互协调地工作。

Xdebug 的配置如下:

[xdebug]
xdebug.auto_trace = on
xdebug.collect_params = on
xdebug.collect_return = on
xdebug.profiler_enable = on
xdebug.profiler_output_dir ="/php/ext/xdebug_profilers"
xdebug.trace_output_dir = "/tmp/ext/xdebug_traces"
xdebug.remote_enable = on
xdebug.remote_host = 'localhost'
xdebug.remote_port = 9100
xdebug.remote_autostart = on

VIM 的配置如下:

" xdebug
let g:debuggerPort = 9100 "(该端口必须与xdebug.remote_port相同)
let g:debuggerMaxDepth = 5

注意:
Xdebug 中 xdebug.remote_host 的 IP 地址是 VIM 所在主机的 IP 地址;
xdebug.remote_port 和 g:debuggerPort 设置的端口需要一致才行,否则不会工作的。

操作示例

1、打断点

在 VIM 中打开项目的 PHP 代码,在 VIM 的命令行模式下,将光标移动到你需要打断点的代码行,输入以下命令:

:Bp

插件即可在该行代码中打一个断点;

2、启动监听

接下来按下 F5 功能键,启动监听调试事件,并且在 5 秒中之内从浏览器中访问该项目的 URL;

3、访问项目

在浏览器中,在正常 URL 的后面添加多一个参数:? XDEBUG_SESSION_START=1,类似以下的 URL:

http://localhost/xdebug.php? XDEBUG_SESSION_START=1

4、调试代码

在浏览器访问 URL 之后,VIM 会进入调试状态。VIM 窗口会被切割成几部分,最左边的是代码窗口,后边有四个显示调试信息的窗口,分别是监控窗口、帮助窗口、栈窗口和跟踪窗口。
类似下图所示:

xdebug vim 调试 PHP 代码
xdebug vim 调试 PHP 代码

在调试的过程中,可以反复利用命令 :Bp 来设置和取消断点。

总结

xdebug & VIM 调试 PHP 代码,虽然是可以跟踪调试 PHP 代码,但体验并没有很好,因为它并不能在调试的过程中实时地打印 PHP 变量的内容。但是,作为跟踪 PHP 代码的运行与调用信息,这种方式还是比较不错的选择!

(完)

本文作者: chenishr

本文标题:《xdebug & VIM 调试 PHP 代码》

本文地址: https://blog.chenishr.com/?p=597

©版权所有,除非注明, 永在路上文章均为原创,转载请以链接形式注明出处和作者细信息。

发表评论

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