linux下vim实现php远程调试环境搭

jopen 9年前

首先是必需组件的安装。

有三个,vim的DBGp插件,php的xdebug扩展,Chrome浏览器的xdebug helper扩展。

一: vim 安装 dbgp client 插件 下载 DBGp client

$ cd ~/.vim/  $ wget http://www.vim.org/scripts/download_script.php?src_id=7285 -O debugger.zip  $ unzip debugger.zip

二:PHP安装xdebug扩展

具体安装方法就不讲了,网上例子很多. 官方安装说明 .

我把我的配置信息贴出来:


[Xdebug]  zend_extension="/home/s/apps/php-5.2.6/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"  xdebug.profiler_enable=0    ;开启profile  xdebug.profiler_enable_trigger=1    ;使用触发器开启profile  xdebug.profiler_output_dir="/home/s/logs/xdebugLog"  xdebug.auto_trace=0     ;开启trace  xdebug.trace_enable_trigger=1   ;使用触发器开启trace  xdebug.trace_output_dir="/home/s/logs/xdebugLog"  xdebug.cli_color=1  xdebug.collect_params=2  xdebug.collect_return=on          ;remote debug   ;开启远程调试  xdebug.remote_enable=1  xdebug.remote_autostart=Off  xdebug.remote_port=9000 ;远程端口,不是你web服务的端口,如果没有冲突,一般不用修改。
其中需要注意的是有注释的地方,不自动开启profile和trace,因为这样每次请求都会保存相应信息,会把磁盘爆掉的。把触发器打开,这样,只有在请求的时候带特定信息的时候,才会记录相应的性能信息。触发器的实现机制是:在请求时,如果GET/POST/COOKIE信息中包含特定的变量,会开启对应的debug,profile或trace,所以我们可以通过在web中访问页面时,添加对应的变量来开启相应的功能。如果每次都自己拼接这个,也挺麻烦,所以会介绍后边的xdebug helper的chrome扩展,想开启任何一个功能的时候,点击一下扩展就可以了。也就是说,这个扩展不是调试必须的,但是会让你感觉用起来很方便。 三:chrome扩展xdebug helper

地址: https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

如果在 chrome://apps里搜索xdebug helper搜索不到,记得把你的语言改为 English.

xdebug-helper-introduction20140226142342

xdebug helper两处配置要注意, </span>IDE Key要注意选择Other, 值为1,然后保存。 </span>

第二个是domain白名单,如果不希望每个页面都出调试的debug icon,就把开发时的域名填进来,比如localhost神马的。其实icon很小,也不太碍事,可以不用设置。

开始使用

如果不要debug调试,只是需要记录profile和trace信息,看一下性能问题,那么很简单,直接在chrome访问对应的url,会在url右侧看到一个xdebg helper 的小icon,点击后,选择 profile或trace,再刷新,就可以在预先设置的目录见到对应的文件了。

cachegrind* 是profile的文件,trace* 是trace的文件。

在windows下使用WinCacheGrind可以方便的查看profile的信息。

xdebug_helper_debug_profile_trace

xdebug_output_file_trace_profile

winCacheGrind_output

最后,是 如何开启远程调试 .

用vim编辑程序文件,在需要中断的地方使用:Bp命令打上断点。然后按F5执行监听。

这个时候,vim会提示 waiting for a new connection on port 9000 for 5 seconds… ,所以这个时候你需要在5s内向服务端发起带中断的请求,在前边的url地址,我们把xdebug helper的debug选择上,刷新页面,vim就会进入中断了。右侧有相关提示,我们就可以按GDB的方式逐步调试啦。如果没有安装xdebug helper,也无所谓,自己手动在url上拼接一个参数: &XDEBUG_SESSION_START=1 也可以开启远程调试的。

xdebug_remote_debug_how

转自: http://digdeeply.org/archives/tag/dbgp </div>

来自: http://www.finalshares.com/read-5836