搜索
首页后端开发php教程linux下vim实现php远程调试环境搭

首先是必需组件的安装。

有三个,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    ;开启profilexdebug.profiler_enable_trigger=1    ;使用触发器开启profilexdebug.profiler_output_dir="/home/s/logs/xdebugLog"xdebug.auto_trace=0     ;开启tracexdebug.trace_enable_trigger=1   ;使用触发器开启tracexdebug.trace_output_dir="/home/s/logs/xdebugLog"xdebug.cli_color=1xdebug.collect_params=2xdebug.collect_return=on      ;remote debug   ;开启远程调试xdebug.remote_enable=1xdebug.remote_autostart=Offxdebug.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两处配置要注意, IDE Key要注意选择Other, 值为1,然后保存。

第二个是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
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
您如何优化PHP应用程序的性能?您如何优化PHP应用程序的性能?May 08, 2025 am 12:08 AM

TOOPTIMIZEPHPAPPLICITIONSFORPERSTORANCE,USECACHING,数据库imization,opcodecaching和SererverConfiguration.1)InlumentCachingWithApcutCutoredSatfetchTimes.2)优化的atabasesbasesebasesebasesbasesbasesbaysbysbyIndexing,BeallancingAndWriteExing

PHP中的依赖注入是什么?PHP中的依赖注入是什么?May 07, 2025 pm 03:09 PM

依赖性注射inphpisadesignpatternthatenhancesFlexibility,可检验性和ManiaginabilybyByByByByByExternalDependencEctenceScoupling.itallowsforloosecoupling,EasiererTestingThroughMocking,andModularDesign,andModularDesign,butquirscarecarefulscarefullsstructoringDovairing voavoidOverOver-Inje

最佳PHP性能优化技术最佳PHP性能优化技术May 07, 2025 pm 03:05 PM

PHP性能优化可以通过以下步骤实现:1)在脚本顶部使用require_once或include_once减少文件加载次数;2)使用预处理语句和批处理减少数据库查询次数;3)配置OPcache进行opcode缓存;4)启用并配置PHP-FPM优化进程管理;5)使用CDN分发静态资源;6)使用Xdebug或Blackfire进行代码性能分析;7)选择高效的数据结构如数组;8)编写模块化代码以优化执行。

PHP性能优化:使用OpCode缓存PHP性能优化:使用OpCode缓存May 07, 2025 pm 02:49 PM

opcodecachingsimplovesphperforvesphpermance bycachingCompiledCode,reducingServerLoadAndResponSetimes.1)itstorescompiledphpcodeinmemory,bypassingparsingparsingparsingandcompiling.2)useopcachebachebachebachebachebachebachebysettingparametersinphametersinphp.ini,likeememeryconmorysmorysmeryplement.33)

PHP依赖注入:增强代码可维护性PHP依赖注入:增强代码可维护性May 07, 2025 pm 02:37 PM

依赖注入在PHP中通过外部注入方式提供对象依赖,提高代码的可维护性和灵活性。其实现方式包括:1.构造函数注入,2.设值注入,3.接口注入,使用依赖注入可以解耦、提高可测试性和灵活性,但需注意可能增加复杂性和性能开销。

如何在PHP中实施依赖注入如何在PHP中实施依赖注入May 07, 2025 pm 02:33 PM

在PHP中实现依赖注入(DI)可以通过手动注入或使用DI容器来完成。1)手动注入通过构造函数传递依赖,如UserService类注入Logger。2)使用DI容器可以自动管理依赖,如Container类管理Logger和UserService。实现DI可以提高代码的灵活性和可测试性,但需要注意过度注入和服务定位器反模式等陷阱。

unset()和session_destroy()有什么区别?unset()和session_destroy()有什么区别?May 04, 2025 am 12:19 AM

Thedifferencebetweenunset()andsession_destroy()isthatunset()clearsspecificsessionvariableswhilekeepingthesessionactive,whereassession_destroy()terminatestheentiresession.1)Useunset()toremovespecificsessionvariableswithoutaffectingthesession'soveralls

在负载平衡的情况下,什么是粘性会话(会话亲和力)?在负载平衡的情况下,什么是粘性会话(会话亲和力)?May 04, 2025 am 12:16 AM

stickysessensureuserRequestSarerOutedTothesMeServerForsessionDataConsisterency.1)sessionIdentificeAssificationAssigeaSsignAssignSignSuserServerServerSustersusiseCookiesorUrlModifications.2)一致的ententRoutingDirectSsssssubsequeSssubsequeSubsequestrequestSameSameserver.3)loadBellankingDisteributesNebutesneNewuserEreNevuseRe.3)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境