更新于 2013-02-22 03:59:02 UEANER

Xdebug 简介

Xdebug 是一个开源的 PHP 程序调试器,可以用来跟踪,调试和分析 PHP 程序的运行状况。 本文只做跟踪调试,分析 PHP 程序的运行状况,请看 使用 Xdebug + Webgrind 分析 PHP 程序

安装 xdeubg zend 扩展

# yum install php-pecl-xdebug

配置 php.d/xdebug.ini

# vi /etc/php.d/xdebug.ini
; 加入以下内容
; xdebug 作为 zend 扩展,使用全路径
zend_extension=/usr/lib64/php/modules/xdebug.so

; debugging
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
; php-fpm 使用 unix socket 或其他端口, 避免与 xdebug 冲突
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

配置完毕,重启 service php-fpm restart

vim 安装 dbgp client 插件

下载 DBGp client直接下载

$ unzip debugger.zip
$ mv plugin/debugger.vim plugin/debugger.py ~/.vim/plugin/

开始调试

1. 启动监听:vim 打开要调试的文件 myscript.php,按 F5 进入监听,底部将出现
'waiting for a new connection on port 9000 for 5 seconds...' 字样

2. 触发监听(在 5 秒以内):
    命令行触发:XDEBUG_CONFIG="idekey=session_name"
        export XDEBUG_CONFIG="idekey=vim" && php myscript.php

    浏览器添加参数触发:XDEBUG_SESSION_START
        直接访问地址 http://localhost/myscript.php?XDEBUG_SESSION_START=1

    Chrome 借助 Xdebug Helper 插件触发:刷新页面
        访问地址 http://localhost/myscript.php,刷新页面
        配置 Xdebug Helper:
        a) 将 IDE key 下拉框选 Other,文本框输入 1,点保存
        b) Domain filter 添加调试的域名 localhost

接下来就可以返回 vim 进行单步调试了

安装 Chrome Xdebug Helper 扩展。

注:如果监听端口不是 9000,请先先在 vim 命令行模式下执行 let g:debuggerPort = port, port 为 php.d/xdebug.inixdebug.remote_port 设置的端口, 或者修改 ~/.vim/plugin/debugger.vim 文件, 将 let g:debuggerPort = 9000 替换为相应端口, 且使用 命令行触发浏览器添加参数触发 方式。

调试快捷键

[ Function Keys ]                 |
  <F1>   resize                   | [ Normal Mode ]
  <F2>   step into                |   ,e  eval
  <F3>   step over                |
  <F4>   step out                 |
  <F5>   run                      | [ Command Mode ]
  <F6>   quit debugging           | :Bp toggle breakpoint 
                                  | :Up stack up          
  <F11>  get all context          | :Dn stack down
  <F12>  get property at cursor   |

F11:获取所有变量内容,F12:获取当前光标下的变量值(为已执行过的代码部分中的变量), F4:跳出文件或跳至断点,:Bp:设置断点。

自定义 ~/.vim/plugin/debugger.vim 文件,这个文件里边有一些参数, 可以通过自己的喜好更改,g:debuggerPort:监听端口, g:debuggerMaxDepth:调试器的最大深度(如果 F12 查看变量值无法显示子元素, 可以调整这个参数)。注释掉 map <F7> map <F8> map <F9> 三行,占的键有点多, 配置 ctags/cscope/taglist 那篇文章中已经把 F8 给了 TaglistF9 给了 NERDTree

参考

xdebug.org:http://xdebug.org/docs/all_settings#remote_enable
xdebug.org:http://xdebug.org/docs/remote#starting
PHP 调试技术手册:http://heiyeluren-doc.googlecode.com/files/PHP-Debug-Manual-public.pdf
转载请注明出处。
本文地址:http://blog.aboutc.net/profiling/5/vim-xdebug-dbgp-debugging-php-program

评论:2

阿宝 2014-09-27 20:50:19
插件该更新了
https://brookhong.github.io/2014/09/27/dbgpavim-cn.html
ueaner 2014-09-30 00:52:44
@阿宝: 非常感谢,将在试用之后更新。
关闭高亮高亮 分享到新浪微博分享到新浪微博