(转)使用 vs.php 调试PHP
vs.php以插件形式安装到vs,现在已经出到2.9,支持visual studio2005~2010,到官网下载安装即可。默认是30天试用,可以搭配visualstudio express。安装以后,在visual studio的新建项目里就会多出来php的项目。
当然也支持一个解决方案,多个项目。
vs.php在启动的时候,会自动扫描包含在项目里的php文件,并加载到代码自动感知里。同时,未避免加载太多的感知支持,默认并没有加载不常用的php扩展的感知支持,如果有需要的话,可以右键项目,选择Add Php Module, 在列表里选择要添加的扩展,如图。 如果要对项目外的文件添加感知,也可以通过右键项目,选择Add Php Refence,选择文件添加支持。
需要调试的话,可以编辑项目属性,这里的话,有个不太好的地方就是Start page一定要设置,不然无法启动调试,而且按F5运行调试时,就是打开这个起始页,没办法像ASP.NET那样,运行当前打开的页面。
你可以根据需要选择调试的模式等配置,当然,如果你觉得有的东西老改麻烦的话,也可以通过修改vs.php的配置来一劳永逸。vs.php内带了一个apache2.2在安装目录下,所以,选择调试的时候,你可以决定用内置的apache还是服务器的apache,同时,安装目录下有PHP4,PHP5的目录,里面的东西也可以修改使用,诸如php.ini。如果使用xdebug来调试的话,推荐修改下php5下的php-xdebug.ini,添加修改下
[XDebug]
xdebug.idekey = vsphp
xdebug.auto_trace=On
xdebug.collect_params=On
xdebug.collect_return=On
xdebug.trace_output_dir="d:/x-debuginfo"
xdebug.profiler_enable=On ;打开效能监测器
xdebug.profiler_output_dir="d:/x-debuginfo"
xdebug.default_enable = On
xdebug.show_mem_delta=On
这样,调试时就会输出调试信息到d:/x-debuginfo,再使用WinCacheGrind来查看这个执行的CPU,内存使用情况,函数执行时间,尤其方便进行性能优化。如
Language Reference目录下存放的是php的函数注解,智能感知就依赖这些文件,修改里面的注释信息,就可以改变感知时的提示,现在是全英文的,不知道会不会出一个中文的注释,期待。
在代码智能感知方面,vs.php只能打到80分这样,有的时候出不来是比较郁闷的。当然,这可能与你将类或函数分布在其他的文件里有关系,vs.php会自动解析require,include等的包含语句,并尝试加载解析这个文件,在使用实例化对象时,在当前的信息不足时,会尝试按照项目配置属性里的设置加载该文件
就如同php里面的__autoload。
另外,规范合理的注释将为代码感知的提示提供极大的便利,尤其是对于自定义的类对象,尤为有效。就比如说,
这里的$this->response,他并不知道是什么类型,所以任何提示都不会有,但是如果加上了类型声明 @var 类型, 那就可以正常显示该对象的成员信息、提示等
在断点调试方面,虽然有时候无法捕获断点,但是也算是实现了。
其实很多时候,因为这个功能的不够可靠,这种情况我还是倾向于自己输出变量查看。
总的说来,个人比较喜欢vs.php,相比zendstudio,NetBeans等的运行速度和资源占用,这无疑是更好的选择。而且,我个人喜欢使用ASP.NET的页面搭配smarty的语法作为php的模板,比起纯粹的html模板,.NET的页面在visualstudio里面有着无可比拟的优点,例如Masterpage和usercontroller,都能正常显示,这个对于控件复用和设计而言,相当的方便。具体的模板类,有空的时候整理下再放出。
如果你还在用记事本啦,Dreamweaver之类的,不妨试试vs。
(转)使用 vs.php 调试PHP的更多相关文章
- C# Web应用调试开启外部访问
在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...
- NodeJs之调试
关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...
- 微信公众号开发之VS远程调试
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...
- 写出易调试的SQL(修订版)
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...
- tomcat开发远程调试端口以及利用eclipse进行远程调试
一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里: SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...
- Hawk 4.7 单步调试
单步调试的意义 已经编写的工作流,可能会因为某些外界环境的变化而出错,此时需要排除错误,我们可以使用单步调试. 单步调试的本质,相当于只使用前n个模块,这样就能看到每个步骤下,流的改变. 例子 还是上 ...
- Visual Studio 2012远程调试中遇到的问题
有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户 ...
- iOS逆向工程之Hopper+LLDB调试第三方App
LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...
- 写出易调试的SQL
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...
- linux应用调试技术之GDB和GDBServer
1.调试原理 GDB调试是应用程序在开发板上运行,然后在PC机上对开发板上得应用程序进行调试,PC机运行GDB,开发板上运行GDBServer.在应用程序调试的时候,pc机上的gdb向开发板上的GDB ...
随机推荐
- 28335XINTF的简单使用
28335 XINTF基本特点 一共有三个外部存储区域:区域0(Zone 0),区域6(Zone 6)和区域7(Zone 7).对应的 访问地址为:Zone 0:0x0000_4000-0x0000_ ...
- PHP——explode的应用(获取字符串,拆为下拉列表)
<?php //定义有默认值的函数 function Main3($f=5,$g=6) { echo $f*$g; } Main3(2,3); echo "<br />&q ...
- hdu 2571 (命运) 那个配图女神
http://acm.hdu.edu.cn/showproblem.php?pid=2571 枚举每一个点,找出按照题目要求的这个点的上一点的最大值,合并到当前点,注意只取前面的一种情况 #inclu ...
- iOS.Library.Architecture
在用file查看library的architechture时有以下输出: $ file WebPWebP: Mach-O universal binary with 3 architecturesWe ...
- spring batch遇到的一些问题
1.Spring Batch - A job instance already exists: JobInstanceAlreadyCompleteException 这是因为JobParameter ...
- 通过 ulimit 改善系统性能
系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段.ulimit 是一种 l ...
- [Robot Framework] 校验字符串中是否包含某个子字符串,校验同时满足两个条件中任意一个
${tWarningMessage} Run Keyword If ${tIfExist} AutoItLibrary.Win Get Text Generate Fee Data warning m ...
- where
(二)WHERE //where不单独使用,与match,optional match,start,with搭配 where 与match,optional match 一起用,表示约束 where ...
- Vue修饰符
为了方便大家写代码,vue.js给大家提供了很多方便的修饰符,比如我们经常用到的取消冒泡,阻止默认事件等等~ 目录 表单修饰符 事件修饰符 鼠标按键修饰符 键值修饰符 v-bind修饰符(实在不知道叫 ...
- from collections import namedtuple 使用
from collections import namedtuple Point = namedtuple('Point', ['x', 'y'])#本质就是等价于 class Point(): # ...