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. HDFS之Qurom Journal Manager(QJM)实现机制分析

    前言 1.1背景 自从hadoop2版本开始,社区引入了NameNode高可用方案.NameNode主从节点间需要同步操作日志来达到主从节点元数据一致.最初业界均通过NFS来实现日志同步,大家之所以选 ...

  2. Uva 232 一个换行WA 了四次

    由于UVA OJ上没有Wrong anwser,搞的多花了好长时间去测试程序,之前一直以为改OJ有WA,后来网上一搜才知道没有WA,哎哎浪费了好长时间.此博客用来记录自己的粗心大意. 链接地址:htt ...

  3. FlutterGo 后端知识点提炼:midway+Typescript+mysql(sequelize)

    前言 关于 FlutterGo 或许不用太多介绍了. 如果有第一次听说的小伙伴,可以移步FlutterGo官网查看下简单介绍. FlutterGo 在这次迭代中有了不少的更新,笔者在此次的更新中,负责 ...

  4. Pytorch的基础数据类型

    引言 本篇介绍Pytorch的基础数据类型,判断方式以及常用向量 基础数据类型 torch.Tensor是一种包含单一数据类型元素的多维矩阵. 目前在1.2版本中有9种类型. 同python相比,py ...

  5. SpringMVC 图片上传虚拟目录

    可以直接在tomcat的server.xml文件中进行设置,位置在Host中 添加内容为:<Context docBase="G:\JAVAtest\temp" path=& ...

  6. 代码审计之SQL注入及修复

    在新手入门web安全的时候,sql注入往往是最先上手的一个漏洞,它也是危害相当大的一个漏洞,存在此漏洞的话,将有被脱裤的风险. 以下所有代码都是我自己写的,可能有不美观,代码错误等等问题,希望大家可以 ...

  7. SpringBoot数据聚合(spring-boot-data-aggregator-starter)

    背景 接口开发是后端开发中最常见的场景, 可能是RESTFul接口, 也可能是RPC接口. 接口开发往往是从各处捞出数据, 然后组装成结果, 特别是那些偏业务的接口. 例如, 我现在需要实现一个接口, ...

  8. windows 安装gitbook并使用gitbook editor可视化工具

    GitBook是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书. 一.官网下载nodejs直接安装 传送门,安装完成后如下: 可以看到n ...

  9. 在vue的mounted下使用setInterval的误区

    1. vue对象的生命周期 1). 初始化显示(只执行一次) * beforeCreate() * created() * beforeMount() * mounted() 2). 更新状态(可执行 ...

  10. thinkphp5 模型表关联

    student 表 外键 grade_idgrade 表主键 id在 模型中student表关联方法public function Grade(){ return $this->hasOne(' ...