0x01 Xdebug简介

Xdebug是一个开放源代码的PHP程序调试器

运行流程:

0x02  Xdebug配置

日志
xdebug.trace_output_dir:
日志追踪输出目录
xdebug.trace_output_name
日志文件名,xdebug提供了一系列的标识符,生成相应格式的文件名
xdebug.trace_options
记录添加到文件中方式:1=追加(如果存在该文件).0(default)=覆盖(如果存在该文件)
显示数据
**xdebug.collect_params
非零值 = 控制function的参数显示选项
0--------不显示
1--------参数类型,值(例如:array(9)).
2--------同1,只是在CLI模式下略微有区别
3--------所有变量内容
4--------所有变量内容和变量名
xdebug.collect_return
1--------显示function返回值. Default 0 不显示
-xdebug.collect_vars
1--------显示当前作用域使用了哪些变量,显示变量名,该选项不会记录变量的值
**xdebug.collect_ assignments
1--------添加一行显示变量赋值
日志追踪输出目录
xdebug.trace_format
0-------------------人可读
1-------------------机器可读
2-------------------html格式
行为

追踪方式有两种,一种是自动追踪,所有php脚本运行时,都会产生trace文件;另一种是触发方式追踪

xdebug.auto_trace
1---------------打开自动追踪

xdebug.trace_enable_trigger
注:该特性只有在2.2+版本才能设置
1------------------使用XDEGUG_TRACE GET/POST触发追踪,或者通过设置cookie XDEGUG_TRACE,为了避免每次请求时,都会生成相应trace追踪文件,你需要把auto_trace设置为0

0x03 xdebug调试记录

在需要调试的行上打上断点(点击一下行号后面的空白处即可,再点一次取消断点),需要说明的是当程序运行到该断点时,程序会停留在该行,但该行本身不会执行。自此可以查看程序运行到此处时所包含的所有数据信息。当然,查看信息功能相当于使用php中的var_dump。

   

  操作流程:
  打断点—>点击‘虫子’—>点击浏览器页面触发断点—>自动跳转回PhpStorm—>查看携带的数据(调试的目的)—>可按步执行查找问题点—>点击运行(或者F5)—>浏览器页面继续执行—>调试完成。

快捷按钮:

第一个按钮:step over 步越
执行当前函数的下一步,如果有子函数,也不会进入,会一直执行到函数结束

第二个按钮:step into 步入
执行当前函数的下一步,如果有子函数,会从头到尾执行子函数,还原了程序执行的最详细的路线,从构造函数到结尾的每一步都会跳到。

第三个按钮:force step into
与step into 相同,执行当前函数的下一步,如果有子函数也会进入子函数,只不过不会从头到尾的还原函数执行的路线,会直接跳到子函数内第一步,构造函数等一些前置方法会忽略

第四个按钮:step out 步出
跳出当前执行的函数,跳到父函数的下一步。

第五个按钮:run to cursor 
执行到下一个断点处

Xdebug的其他作用

很明显,有了xdebug我们不再需要在代码调试时对一些关键变量一个一个echo或var_dump了,而且我们可以使程序运行到断点时挂起,从而更加精确地锁定出bug的代码的位置。同时Xdebug具有追溯代码的跟踪回溯功能,这样在一些大型的程序的中,即使调用逻辑很复杂,我们也能顺蔓摸瓜一步步到达错误发生的地方。

除此之外,我们可以使用xdebug_time_index()来显示脚本运行时间;可以使用xdebug_memory_usage()来测定脚本占用内存;同时我们还可以查询xdebug的输出日志来查询程序运行的相关信息。

Xdebug自带了一个函数xdebug_time_index()来显示时间。

php代码Xdebug调试使用笔记的更多相关文章

  1. PHPStorm + Xdebug 调试PHP代码 有大用

    星期四, 12/26/2013 - 19:54 - shipingzhong PHPStorm + Xdebug 调试PHP代码 http://e.v-get.com/2013-11-20 16:55 ...

  2. xdebug调试代码常用操作

    xdebug调试代码常用操作 1.查看变量中的值 2.常用快捷键 ①F8单步调试 ②F9可以直接快速结束调试 ③F7 可以进入调试代码的底层方法,我觉得查看底层代码时,这个特别的方便!

  3. 使用phpStorm编辑器进行PHP代码的xdebug调试

    首先需要安装Xdebug,如果没有安装可以查看PHP断点调试工具Xdebug的安装这篇文章.phpStorm是开发者经常用的一款编辑器,当然也支持Xdebug调试,下面说一下配置步骤. phpStor ...

  4. zend studio 添加xdebug调试php代码

    1.Eclipse下对于大部分语言都提供了调试器接口,自然的对于PHP,Zend已经集成了XDebug调试器,找到Zend中的Preferences->PHP->Debug, 将调试器设置 ...

  5. zend stuido 12.5的插件安装和xdebug调试器的配置和和配置注意

    参考: zend stuido 12.5的插件安装 zend 12.5 安装插件是按类别进行分类了的, 而且是在欢迎 界面就可以直接安装, 安装后,要重启zend才能生效 版式设计的一个基本点就是: ...

  6. 使用zend studio配置Xdebug调试PHP教程

    这里看过上面的文章后写一下自己的想法. 最近安装了zend studio 10.5,下载了破解文件.开始是下载了10.0的版本,但是注册码不正确.所以只能安装最新的10.5了. 接下来进行PHP代码调 ...

  7. OD调试学习笔记7—去除未注册版软件的使用次数限制

    OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路 仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需 ...

  8. Udacity调试课笔记之断言异常

    Udacity调试课笔记之断言异常 这一单元的内容不是很多,如Zeller教授所说,就是如何写.检查断言,并如何使用工具实现自动推导出断言的条件. 现在,多数的编程语言,尤其是高级编程语言都会有内置的 ...

  9. wamp下安装php的xdebug调试的方法

    wamp下安装php的xdebug调试的方法 将下载好的php_xdebug-2.1.2-5.2-vc6.dll放在D:/wamp/php/ext/php_xdebug-2.1.2-5.2-vc6.d ...

随机推荐

  1. 腾讯工作近十年大佬:不是我打击你!你可能真的不会写Java

    文章核心 其实,本不想把标题写的那么恐怖,只是发现很多人干了几年 Java 以后,都自认为是一个不错的 Java 程序员了,可以拿着上万的工资都处宣扬自己了,写这篇文章的目的并不是嘲讽和我一样做 Ja ...

  2. kafka入门配置

    问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行“随机读写”的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? ...

  3. Find a way(两个BFS)

    Problem Description Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. L ...

  4. CTC安装及其错误解决办法:binding.cpp:92:49: error: cannot convert ‘THCudaTensor*’ to ‘const THFloatTensor*’ for argument ‘1’ to ‘int64_t THFloatTensor_size(const THFloatTensor*, int)’

    CTC安装: 1. 在终端执行命令:git clone https://github.com/SeanNaren/warp-c) (效果如下图,大家不用管我前面括号的内容,那是我打开的虚拟环境) 2. ...

  5. 006:CSS高级技巧

    目录 前言 理论 CSS高级技巧 一:元素的显示与隐藏 在CSS中有三个显示和隐藏的单词比较常见,我们要区分开,他们分别是 display visibility 和 overflow. 他们的主要目的 ...

  6. Recovery启动流程(2)---UI界面【转】

    Recovery启动流程系列文章把recvoery目录下文件分成小块讲解,最后再以一条主线贯穿所有的内容.这篇文章主要讲解Recovery-UI的相关内容. 我们知道,当我们通过按键或者应用进入rec ...

  7. C++基础之泛型算法

    标准库并未给每个容器添加大量功能,因此,通过大量泛型算法,来弥补.这些算法大多数独立于任何特定的容器,且是通用的,可用于不同类型的容器和不同的元素. 迭代器使得算法不依赖容器,但是算法依赖于元素的类型 ...

  8. 5分钟了解Prometheus

    Prometheus(译:普罗米修斯)用领先的开源监控解决方案为你的指标和警报提供动力(赋能). 1.  概述 1.1.  Prometheus是什么? Prometheus是一个开源的系统监控和警报 ...

  9. SQL Server 内存优化表的索引设计

    测试的版本:SQL Server 2017 内存优化表上可以创建哈希索引(Hash Index)和内存优化非聚集(NONCLUSTERED)索引,这两种类型的索引也是内存优化的,称作内存优化索引,和基 ...

  10. Scrapy项目 - 实现斗鱼直播网站信息爬取的爬虫设计

    要求编写的程序可爬取斗鱼直播网站上的直播信息,如:房间数,直播类别和人气等.熟悉掌握基本的网页和url分析,同时能灵活使用Xmind工具对Python爬虫程序(网络爬虫)流程图进行分析.   一.项目 ...