有哪些 PHP 调试技巧?
xdebug_start_trace();
/* 业务代码 */
xdebug_stop_trace();
他解决了我长久以来一个代码调试问题:比如有以下几个场景:
1、一个有几百行的函数,里面有很多return,现在函数异常返回了,但是我不知道是从哪一行返回的,这时候呢,我一般的做法都是每一行echo();die();太费事了。
2、接触一个新的框架,代码执行出现异常,怎么办呢,肯定也是一行一行的echo();die();
3、想学习一个新框架,想知道代码的执行轨迹:执行了哪些类、调用了哪些类的方法,等等。
现在呢,xdebug的代码跟踪,能帮我们轻松解决上面的问题。https://www.yuedecaifu.com
xdebug的安装(网上我看到了很多的都是在说xdebug、phpstorm、chrome咋配合起来远程调试,搞得大家好像觉得xdebug用起来那么费事,那么高级,其实没必要):
1、安装php xdebug扩展(不再细说)
2、配置:这里只讲代码跟踪相关的配置:
cat /etc/php.d/xdebug.ini
extension=/usr/lib64/php/modules/xdebug.so
;代码跟踪日志文件位置,注意要先新建这个traces目录,并设置777
xdebug.trace_output_dir = /tmp/traces
;代码跟踪日志文件格式
xdebug.trace_output_name = trace.%c.%p
;trace中显示函数的参数值,这个很有用,待会细说
xdebug.collect_params = 4
xdebug.collect_includes = On
xdebug.collect_return = On
xdebug.show_mem_delta = On
安装好之后,代码执行明细(trace),就存放在/tmp/traces目录下了:
<img src="https://pic4.zhimg.com/d2006b7fc37cc5a97e300655c797e90b_b.png" data-rawwidth="605" data-rawheight="221" class="origin_image zh-lightbox-thumb" width="605" data-original="https://pic4.zhimg.com/d2006b7fc37cc5a97e300655c797e90b_r.png">我截取一段trace日志,大家看下,就能感知到这个用法的方便了:
我截取一段trace日志,大家看下,就能感知到这个用法的方便了:
<img src="https://pic3.zhimg.com/972289d2659f965081cc0ac2e8a8de02_b.png" data-rawwidth="811" data-rawheight="459" class="origin_image zh-lightbox-thumb" width="811" data-original="https://pic3.zhimg.com/972289d2659f965081cc0ac2e8a8de02_r.png">1、显示了参数的值:就这一点,我想就会节省我们phper很多的调试时间(默认不显示参数值,只显示调用的函数。需要添加xdebug.collect_params这个配置)
1、显示了参数的值:就这一点,我想就会节省我们phper很多的调试时间(默认不显示参数值,只显示调用的函数。需要添加xdebug.collect_params这个配置)
2、显示了代码的执行轨迹。类似于c语言的单步调试吧。
就这些了,反正用了xdebug,我是觉得debug的时候节省了大量时间,分享给大家,希望对你们也有帮助。
有哪些 PHP 调试技巧?的更多相关文章
- 【工具】VS2010常用调试技巧(1)
调试是一个程序员最基本的技能,其重要性不言自明.不会调试的程序员就意味着他即使会一门语言,却不能编制出好的软件.本文就本人在开发过程中常用的调试技巧作下简单呢介绍,希望对大家有所帮助,能力超群者请绕道 ...
- Visual Studio高级调试技巧
1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...
- 【转】你所不知道的Android Studio调试技巧
这篇写Android studio debug技巧个人觉得写得不错,转自:http://www.jianshu.com/p/011eb88f4e0d# Android Studio目前已经成为开发An ...
- VS调试技巧,提高调试效率(转):
如果你还没有使用过这些技巧,希望这篇博文能帮你发现它们. 它们学起来很容易,能帮你节省很多时间. 运行到光标(Ctrl+ F10) 我经常看见人们是这样来调试应用程序的: 他们在应用程序需要调试的代码 ...
- iOS各种调试技巧豪华套餐
转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global Break ...
- xcode调试技巧
xode报错有时挺无厘头,完全不知道哪里出的问题,最后还得用排除法,记录一些工作中认为有用的调试技巧 1.左侧视图点断点视图,左下角点加号,选择exception breakpoint,类型选c++, ...
- 你所不知道的Android Studio调试技巧
转载:http://www.jianshu.com/p/011eb88f4e0d Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手.作为开发者,调试并发现bug ...
- Visual Studio原生开发的20条调试技巧(下)
我的上篇文章<Vistual Studio原生开发的10个调试技巧>引发了很多人的兴趣,所以我决定跟大家分享更多的调试技巧.接下来你又能看到一些对于原生应用程序的很有帮助的调试技巧(接着上 ...
- Visual Studio原生开发的10个调试技巧
这篇文章只介绍了一些有关Visual Studio的基本调试技巧,但是还有其他一些同样有用的技巧.我整理了一些Visual Studio(至少在VS 2008下)原生开发的调试技巧.(如果你是工作在托 ...
- Visual Studio的调试技巧
Visual Studio的调试技巧 [原文地址] Debugging Tips with Visual Studio 2010 [原文发表日期] 2010/8/19 10:48 AM 这是我写的关于 ...
随机推荐
- 20160805_CentOS6_控制台切换
1. Ctrl + Alt + F1~F6 Ctrl + Alt + F1 是 图形界面(如果装了的话),后面的是 控制台界面 2. 3.
- iOS开发 UIPanGestureRecognizer手势抽象类
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@sel ...
- 深入理解JVM虚拟机-2垃圾收集器
这里讨论的收集器基于JDK 1.7 Update 14之后的HotSpot虚拟机. 如果两个收集器之间存在连线,说明可以搭配使用.虚拟机所处的区域,则表示它是属于新生代收集器还是年老代收集器.在这里我 ...
- libsvm 之 easy.py(流程化脚本)注释
鉴于该脚本的重要性,很有必要对该脚本做一个全面的注释,以便可以灵活的使用libsvm. #!/usr/bin/env python # 这种设置python路径的方法更为科学 import sys i ...
- linux笔记:网络命令ping,traceroute,ifconfig,netstat;挂载和卸载命令mount,umount
命令名称:ping功能:测试网络连通性命令所在路径:/bin/ping用法:ping [-c] IP地址参数:-c 指定发送次数 命令名称:ifconfig功能:查看和设置网卡信息(临时设置)命令所在 ...
- 栅栏 CyclicBarrier
java.util.concurrent.CyclicBarrier 类是一种同步机制,它能够对处理一些算法的线程实现同步.换句话讲,它就是一个所有线程必须等待的一个栅栏,直到所有线程都到达这里,然后 ...
- 20145218 《Java程序设计》第9周学习总结
20145218 <Java程序设计>第9周学习总结 教材学习内容总结 16.1.1 JDBC简介 JDBC全名Java DataBase Connectivity,是java联机数据库的 ...
- jquery和js使用技巧
1. 如何得知图片已加载完毕 这也一个没有很好文档说明的问题(至少在我查找时没看到),但是在创建照片库.旋转灯笼效果等方面,它是相当常见的需求.而这在jQuery中很容易实现. 所有你要做的就是在IM ...
- hdu-----(4857)逃生(拓扑排序)
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- Struts2 实现文件上传和下载
实现上传功能 Struts2实际上是使用的commons fileupload 组件,所以记得导包哦. 1.首先你应该有一个上传页面 <!-- file的name属性与action中的File类 ...