首页 / PHP / php程序调试方法总结_PHP教程
php程序调试方法总结_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php程序调试方法总结_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4061字,纯文字阅读大概需要6分钟。
内容图文
![php程序调试方法总结_PHP教程](/upload/InfoBanner/zyjiaocheng/172/53acd425e7ff47e98e638e3a0c9f7a9f.jpg)
总体原则:
1.找出问题原因:
程序需要调试,是因为程序有问题。而调试的第一目标是找到原因。常见调试方法, 排除法: 当我们面对整个复杂的系统时,常常完全不知道问题出在什么地方;这个时候可以先将与问题不相关的地方排排除,逐渐缩小调试范围。独立模块法: 大部分程序都有模块结构,将可疑模块单独拿出来,模拟输入相应的操作数据,看是否出现问题。比较法:如果程序或系统是基于某个平台时,可以先看看其他基于本平台的程序或系统,找出是平台问题还是本程序问题,很多时候这种方法是用来排除不成熟平台上的隐藏问题。对比法:对于自己实现的程序,可能已经有相应的开源的模块,可以把这些程序源码找出来,和自己的程序进行对比,这样不仅节省时间,还能借鉴别人的优秀之处。
2.问题定位:
问题原因的多种多样,可能这个时候你只能知道是什么样的问题, 可能与什么相关, 这个时候就需将出现的代码段找出来。而需要做到这一步,一般开发环境为我们提供很多实用工具,借助这些工具,可以一步一步地查看程序的输入和输出,根据每一步的输入输出,定位问题。
有一部分很厉害的人,可以通过阅读代码,找到出现问题的地方。但是很多问题都是调试者自己因为疏忽造成的,而要通过这样方式去查找问题,几乎是不可能的,因为已经形成固定的思维定势。
3.解决问题
找到问题的原因和相应代码行,解决它很多时候是一件比较简单的事,因为这些问题往往自己疏忽或者自己考虑不周。但是某些时候并不总是这样的,而是由于外部环境造成的,比如你的网站访问的人数增多,你当初没有考虑到这些数据压力,同时也没有考虑到高度并发性的问题,这个时候问题解决起来是你觉得比较棘手。而要解决这样的问题,不仅仅要专注程序, 更要从系统架构方面着手,综合各方面的知识,进行全面的考虑。
web开发常用调试工具
俗话说:工欲善其石,必先利其器。对于程序的调试,也必须借助外部工具。这里介绍几种在开发web程序中常常用到的工具:
xdebug, xhprof:php性能调试工具。他们都是php的一种扩展,可以很方便的安装和配置。这两个工具主要是将你程序的内部运行状况,调用函数以一种简洁的方式告诉你。让你对程序在什么地方占用过多的资源,那些地方需要进行优化一目了然。 顺便提一下,xdebug生成的profile文件一般借助winCacheGrid查看。
firephp, firbug: 前者主要是php的调试工具,而后者是web开发必不可少的工具, 它不仅能查看请求,还能调试js,css。
在ie下面可以使用HttpWatch。如果需要将数据做深入分析,可以使用抓包工具。
php中常使用的调试函数:error_report, var_dump, print_r, var_export
mysql,apache/nginx的常用的调试技巧:分析他们日志文件也是相当重要。在linux下查看日志文件的常用命令: cat, more, less, grep, awk, sed
常见的调试技巧和方法
下面以我调试的程序来介绍一下具体的调试方法和技巧。
例子1: 这是一个php开发的游戏引擎,主要功能提供双发球员移动位置,状态,传球,技能等功能控制,整个程序通过xml文件保存结果。突然某天,有两个用户进行比赛,返回的xml不符合正常的结构。从返回的结果来看,球员的移动位置有些不正常,其中少了某些步骤,于是决定从游戏的AI入手查找,但是也没有发现此处有什么异常。最后将输入的球员数据打印出来,然后将中间产生的数据也打印出来,结合程序的处理逻辑,发现是这两个用户有同一个球员,因此导致在处理的时候, 两个人的球员出现混乱。找到原因后,就将这个以球员标识改为以球队和球员共同决定即可。
例子2:程序刚上线, 有些热心的朋友们喜欢对程序进行一些压力测试。某次突然20w的请求很大的一个静态资源,直接导致硬盘瘫痪。对于这种情况,必须查看访问日志,才知道发生什么事。否则人家对你攻击了, 你还找不到原因。当然对于这样的攻击,直接把静态资源放到cdn上。另外,随着访问用户量的增大,系统的压力增大, 反应逐渐变慢,我们不得不考虑:以前只需要0.000几毫秒能处理的程序,现在需要0.几秒。这个时候程序的并发性设计就很重要了。否则会造成数据异常的情况。
例子3:使用外部软件出现异常:例如使用memcached的时候,如果某台没有启动或者不能使用了。这个时候nginx一般就会对某些使用memcache的请求返回502,是不是感觉有点无厘头,可以考虑改写memcahce 的php扩展了
http://www.bkjia.com/PHPjc/371989.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/371989.htmlTechArticle相信很多朋友们都有调试程序的经历,然而很多时候调试程序是痛苦而又漫长的过程;它不仅需要细心,更需要耐心,切忌心浮气躁。但是当...
内容总结
以上是互联网集市为您收集整理的php程序调试方法总结_PHP教程全部内容,希望文章能够帮你解决php程序调试方法总结_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。