PHP的学习--在sublime中使用XDebug(Ubuntu)
说起来惭愧,自从开始使用Sublime Text之后,再也没有debug过PHP的代码,最近把debug的环境搭建了一下,在这里记录一下。
安装XDebug
sudo apt-get install php5-xdebug
编辑xdebug.ini文件,添加如下配置
xdebug.remote_enable=
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=
xdebug.remote_log="/var/log/xdebug/xdebug.log"
其中参数代表的含义如下:
[Xdebug]
;load xdebug extension
zend_extension_ts = path/tp/xdebug
;是否开启自动跟踪
xdebug.auto_trace = On
;是否开启异常跟踪
xdebug.show_exception_trace = On
;是否开启远程调试自动启动
xdebug.remote_autostart = Off
;是否开启远程调试
xdebug.remote_enable = On
;允许调试的客户端IP
xdebug.remote_host=127.0.0.1
;远程调试的端口(默认9000)
;xdebug.remote_port=
;调试插件dbgp
xdebug.remote_handler=dbgp
;是否收集变量
xdebug.collect_vars = On
;是否收集返回值
xdebug.collect_return = On
;是否收集参数
xdebug.collect_params = On
;跟踪输出路径
xdebug.trace_output_dir="path/to/xdebug/trace"
;是否开启调试内容
xdebug.profiler_enable=On
;调试输出路径
xdebug.profiler_output_dir="path/to/xdebug/profiler"
重启nginx和php
sudo /etc/init.d/nginx restart
sudo /etc/init.d/php-fpm restart
然后在Sublime Text使用package control安装xdebug client,
用ctrl+shift+p调出搜索框,输入Package Control: 选中其中的Package Control: Install Package,输入Xdebug client,找到xdebug client,安装,安装完成后要重启Sublime。其操作如下:
要调试某一个项目,首先得把这个项目在sublime下保存成一个project。
sublime->project->save project as ...
接下来配置项目
sublime->project->edit poject
配置文件类似以下内容:
{
"folders":
[
{
"follow_symlinks": true,
"path": "."
}
],
"settings": {
"xdebug": {
"url": "http://my.local.website/",
}
}
}
再在chrome中安装Chrome Xdebug Helper扩展。在下载和安装Chrome扩展后,你必须重新启动浏览器。重新启动后,你将看到在Chrome的地址栏的新图标:
点击它,将启用/禁用调试。但是,我们首先需要调整扩展中使用 Sublime Text 的会话密钥。
在Chrome中Tools > Extensions
打开Xdebug helper options:
开启调试方式也比较简单,在想要加断点的地方右键
xdebug->Add/Remove breakpoint
这样项目在运行到本行的时候就会停止下来
然后开始调试,在菜单栏选择
tools->xdebug->start debugging(launch browser)
sublime会自动打开浏览器,进入配置时写的网站链接,进行调试。
调试中所用的功能可以在调试文件中右键查看之。
快捷键说明如下
Start/Stop debugging session
- Start Debugging - Ctrl+Shift+F9 or ⌘+Shift+F9
- Start Debugging (Launch Browser)
- Restart Session
- Stop Debugging - Ctrl+Shift+F10 or ⌘+Shift+F10
- Stop Debugging (Launch Browser)
- Stop Debugging (Close Windows)
Breakpoints
- Add/Remove Breakpoint - Ctrl+F8 or ⌘+F8
- Set Conditional Breakpoint - Shift+F8
- Clear Breakpoints
- Clear All Breakpoints
Watch expressions
- Set Watch Expression
- Edit Watch Expression
- Remove Watch Expression
- Clear Watch Expressions
Session commands
- Evaluate
- Execute
- Status
Continuation commands
- Run - Ctrl+Shift+F5 or ⌘+Shift+F5
- Run To Line
- Step Over - Ctrl+Shift+F6 or ⌘+Shift+F6
- Step Into - Ctrl+Shift+F7 or ⌘+Shift+F7
- Step Out - Ctrl+Shift+F8 or ⌘+Shift+F8
- Stop
- Detach
Other
- Restore Layout / Close Windows - Ctrl+Shift+F11 or ⌘+Shift+F11
- Settings - Default
- Settings - User
问题无法跟踪断点
这可能是xdebug端口被占用,按Ctrl+`或者菜单栏View->show Console查看错误信息,有可能是xdebug端口已经被占用的缘故。
在sublime xdebug中关闭调试,或者重启sublime可以解决这个问题,如果还不行,可以修改端口号,如xdebug.ini中的端口号修改为为1000,在perferences->package settings->xdebug->setting-user文件中加入如下内容:
{
"port":
}
弄好这个还是费了些时间~~
php环境在server上,在本地调试
可以再在perferences->package settings->xdebug->setting-user文件中加入如下内容:
"path_mapping": {
"/absolute/path/to/file/on/server" : "/path/to/file/on/computer",
"/var/www/htdocs/example/" : "C:/git/websites/example/"
}
参考
Debug PHP with Sublime Text 2 and Xdebug on Ubuntu
PHP的学习--在sublime中使用XDebug(Ubuntu)的更多相关文章
- PHP的学习--在Atom中使用XDebug(Mac)
之前写过一篇博客<PHP的学习--在sublime中使用XDebug(Ubuntu)>,讲了在Ubuntu系统 sublime 中配置 XDebug,其实配置好之后,我也很少用,原因有两点 ...
- Sublime中开发Ruby
Ruby:Sublime中开发Ruby需要注意的Encoding事项 目录 背景Sublime相关默认的文件存储编码:UTF8默认的输出控制台编码:UTF8修改默认的输出控制台编码Ruby相关默认的代 ...
- Golang学习:sublime text3配置golang环境
最近导师让学习golang, 然后我就找了些有关golang的学习视频和网站. 昨天在电脑上下载了go tools, 之后在sublime上配置了golang的运行环境.By the way, 我的电 ...
- 沉淀,再出发:sublime中快捷键和html标签的使用和生成以及使用markdown
沉淀,再出发:sublime中快捷键和html标签的使用和生成以及使用markdown 一.前言 工欲善其事,必先利其器.在软件代码的编写中,一定要知道IDE或者编辑器的快捷键的使用,这样可以提高很多 ...
- Ruby:Sublime中开发Ruby需要注意的Encoding事项
背景 最近在用Sublime作为开发环境学习Ruby,本文就记录一下Ruby和Sublime在编码方面的问题. Sublime相关 默认的文件存储编码:UTF8 Sublime文件默认存储编码为UTF ...
- 手把手教你写Sublime中的Snippet
手把手教你写Sublime中的Snippet Sublime Text号称最性感的编辑器, 并且越来越多人使用, 美观, 高效 关于如何使用Sublime text可以参考我的另一篇文章, 相信你会喜 ...
- 各种报错各种坑 webpack让我在学习的过程中一度想要放弃
由于拓展部分不是必须的,只是可以增强用户体验,但是有些时候页面给分页预留的位置不够,这个时候我们就可以通过设置来除去这一部分 子分区由两种创建方法,一种是不定义每个子分区子分区的名字和路径由分区决定, ...
- 【腾讯Bugly干货分享】深度学习在OCR中的应用
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5809bb47cc5e52161640c5c8 Dev Club 是一个交流移动 ...
- 学习网页制作中如何在正确选取和使用 CSS 单位
在 CSS 测量系统中,有好几种单位,如像素.百分比.英寸.厘米等等,Web 开发人员很难了解哪些单位在何处使用,如何使用.很多人习惯了总是使用同一种单位,但这一决定可能会严重限制你的设计的执行. 这 ...
随机推荐
- 有关JVM配置参数含义
1.参数的含义-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M-vmargs 说明后面是VM的参数,所以后面的其实都是JV ...
- VS2015安装&简单的C#单元测试
<软件工程>开课已经三周了,三周的上课感觉就是老师教授的概念性东西少了不少,基本就是贯穿“做中学”的教学理念,三周的时间让我学到了挺多东西,很多东西都是课本没有的. 这周的任务就是安装VS ...
- QSort函数对不同类型数据快速排序浅谈
一.对int类型数组排序 int num[100]; int cmp ( const void *a , const void *b ){return *(int *)a - *(int *)b;} ...
- 浏览器中CSS的BUG
对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声明. 其它请参考:CSS hack 针对IE6,IE7,fir ...
- SQL Server 数据变更时间戳(timestamp)在复制中的运用
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 方案(Solution) 方案一(Solution One) 方案二(Solution Two ...
- 利用SSH Filesystem实现远程文件系统
远程文件系统的访问有很多种不同的实现方式,一些常见的连接方式比其它特定情况下的更有用.最著名的一个例子就是微软的通用互联网文件系统(CIFS),它可以容许微软Windows"映射网 ...
- ReactJs笔记
中文教程:http://reactjs.cn/ 实例: http://www.ruanyifeng.com/blog/2015/03/react.html
- MySQL 提高Insert性能
插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例: 连接:(3) 发送查询给服务器:(2) 分析查询:(2) 插入记录:(1x记录大小) 插入索引:(1x索引) 关闭:(1) 这不考虑打开 ...
- 一次Mysql 死锁事故
故障描述: 简单描述一下需求:我们写的一个计步器的客户端软件,用户通过手机客户端将用户的运动计步信息传到服务器. 服务器侧记录每个用户每次上传明细,同时每个用户有一个汇总值,参与全省排名. 1.加入明 ...
- 同一AppDomain内的SharpGL的FrameBuffer会相互影响?
同一AppDomain内的SharpGL的FrameBuffer会相互影响? 今天做一个试验时,偶然发现了这样一个问题. 以SharpGL的示例项目SimpleDrawingSample为例. 给Fo ...