相信很多朋友们都有调试程序的经历 然而很多时候调试程序是痛苦而又漫长的过程它不仅需要细心 更需要耐心 切忌心浮气躁 但是当找出问题并顺利解决它时 又会给人无比激动的喜悦 这里总结一下笔者在程序调试中的使用的原则 工具 以及方法 这里需要说明的是 某些原则性的东西 各种语言都是差不多的 而涉及到具体的工具和某些具体的调试方法 这里只涉及web开发方面的内容
总体原则
找出问题原因
程序需要调试 是因为程序有问题 而调试的第一目标是找到原因 常见调试方法 排除法: 当我们面对整个复杂的系统时 常常完全不知道问题出在什么地方这个时候可以先将与问题不相关的地方排排除 逐渐缩小调试范围 独立模块法: 大部分程序都有模块结构 将可疑模块单独拿出来 模拟输入相应的 *** 作数据 看是否出现问题 比较法 如果程序或系统是基于某个平台时 可以先看看其他基于本平台的程序或系统 找出是平台问题还是本程序问题 很多时候这种方法是用来排除不成熟平台上的隐藏问题 对比法 对于自己实现的程序 可能已经有相应的开源的模块 可以把这些程序源码找出来 和自己的程序进行对比 这样不仅节省时间 还能借鉴别人的优秀之处
问题定位
问题原因的多种多样 可能这个时候你只能知道是什么样的问题 可能与什么相关 这个时候就需将出现的代码段找出来 而需要做到这一步 一般开发环境为我们提供键蠢肆很多实用工具 借助这些工具 可以一步一步地查看程序的输入和输出 根据每一步的输入输出 定位问题
有一部分很厉害的人 可以通过阅读代码 找到出现问题的地方 但是很多问题都是调试者自己因为疏忽造成的 而要通过这样方式去查找问题 几乎是不可能的 因为已经形成固定的思维定势
解决问题
找到问题的原因和相应代码行 解决它很多时候是一件比较简单的事 因为这些问题往往自己疏忽或者自己考虑不周 但是某些时候并不总是这样的 而是由于外部环境造成的 比如你的网站访问的人数增多 你当初没有考虑到这些数据压力 同时也没有考虑到高度并发性的问题 这个时候问题解决起来是你觉得比较棘手 而要解决这样的问题 不仅仅要专注程序 更要从系统架构方面着手 综合各方面的知识 进行全面的考虑
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
常见的调试技巧和方法
下面以我调试的程序来介绍一下具体的调试方法和技巧
例子 这是一个php开发的游戏引擎 主要功能提供双发球员移动位置 状态 传球 技能等功能控制 整个程序通过xml文件保存结果 突然某天 有两个用户进行比赛 返回的xml不符合正常的稿轿结构 从返回的结果来看 球员的移动位置有些不正常 其中少了某些步骤 于是决定从游戏的AI入手查找 但是也没有发现此处有什么异常 最后将输入的球员数据打印出来 然后将中间产生的数据也打印出来 结合程序的处理逻辑 发现是这两个用户有同一个球员 因此导致在处理的时候 两个档返人的球员出现混乱 找到原因后 就将这个以球员标识改为以球队和球员共同决定即可
例子 程序刚上线 有些热心的朋友们喜欢对程序进行一些压力测试 某次突然 w的请求很大的一个静态资源 直接导致硬盘瘫痪 对于这种情况 必须查看访问日志 才知道发生什么事 否则人家对你攻击了 你还找不到原因 当然对于这样的攻击 直接把静态资源放到cdn上 另外 随着访问用户量的增大 系统的压力增大 反应逐渐变慢 我们不得不考虑 以前只需要 几毫秒能处理的程序 现在需要 几秒 这个时候程序的并发性设计就很重要了 否则会造成数据异常的情况
例子 使用外部软件出现异常 例如使用memcached的时候 如果某台没有启动或者不能使用了 这个时候nginx一般就会对某些使用memcache的请求返回 是不是感觉有点无厘头 可以考虑改写memcahce 的php扩展了
lishixinzhi/Article/program/PHP/201311/21278
【篇一】程序员个人年终工作总结
在过去的一年中,我担任公司开发部的一名软件工程师,主要从事着JA项目的开发工作,这一年来我低调努力工作着,不求闪亮显眼和光芒四射,只为平静和淡定这一年中所做的成绩如下:
一、财政局项目,本人独立负责开发会计处的三个子系统:
1、会计人员信用查询系统。
2、代理记账机构信用查询系统。
3、会计人员网上报备系统。
以上三个子系统上线后,方便了社会各界查验会计人员的真实信息、方便了查询合法的代理记账机构信息,以及方便了各单位对会计人员的报备。
二、餐饮行业项目,在团队开发项目中直接参与了豪享来餐饮有限公司总部的信息综合管理平台项目,主要负责的系统有:
1、房屋租赁合同管理系统。
2、短信收发管理系统。
3、会员管理系统。
4、基础信息管理系统和人事管理系统的部分功能模块。
系统应用后,豪享来在管理全国各门店房屋租赁合同上,一定程度上提高了管理效率,并且及时有效提供了相应预警信息短信收发系统方便了总部及时传递各项信息会员系统更好的管理全国各门店的会员信息人事系统在管理中减少工作量等。
三、金融行业项目,我参与了中国银行厦门分行,企业转账管理系统中的部分模块开发。
本系统方便了企业快速实现大量和复杂的转账工作。
四、国土资源与房产管理局项目,正在负责和开发的是住房货币化补贴网上申报审核系统。
本项目采用了新技术,使界面更加大方美观,很大程度上改善人机交互平台的效果。
总结不足:驻豪享来总部做项目时,由于团队内部某些原因,加之外面的其他因素,一定程度上影响了工作效率、影响开发进度隐拦和影响最终软件质量这是包括我在内项目组中的每个成员都必须检讨的地方。
通过总结一年来的工作,尽管有了一定的进步和成绩,但在一些方面还存在不足,个别工作做得还不够完善。在今后的工作中,我将努力找出工作中的不足,以便在日后的工作中加以克服。自我不断悄携乱的学习吸收新技术,认真学习好规范规程及有关文件资料,并启档且及时的把新技术应用在实际的项目中,进一步提高项目的技术含量。
【篇二】程序员个人年终工作总结
我是一名程序员,在过去的一年里,软件研发部团结协作,以及在公司这充满奋斗的环境下,我以严肃认真的工作态度和百折不饶的精神,努力的完成了公司的各项工作,在软件研发、团队协作和个人成长上也取得了一定的成绩。在公司一年的工作已经结束,特向公司总结汇报如下:
一、软件研发
根据公司的安排,项目的需要。在自身的努力、伍经理的帮组,团队的合作下,克服重重技术困难,增长了工作经验,收获丰盈:
1、asp.net开发
以前我在其他公司也做过一些开发,但是底层和架构与页面样式我都是没有涉及到的。通过这一年在本公司的的这些项目程序中的锻炼,我成长了,我学会了很多很多。
首先,面向对象语言的收获。对于当前编程的主流思想是对象,任何事物都可以用对象来表示。以前理解这些话很费解都是从表面上理解,没有从深入的体会,通过这次asp.net项目的深入,不管是数据还是外部一些条件我们都可以抽象成对象,都可以用对象来表示,具体可以用语言中的类方等。asp.net如此,c#如此java也同样如此。
其次,具备独立完成vb.net知识方面的能力。以前没有做过vb的东西,加上这次深入的做,这次涉及到的领域也非常广,常用的重要的都有涉及,并且还补充_ml,java实际 *** 作中空白的部分。通过这一年的开发,在.net方面我能胜任这方面的工作,能独立完成这方面的工作。
再次,c#方面存在一些不足。LocALhOST通过c#这次软件的开发,也发现自己的不足,如基础知识掌握不牢,缺乏编程整体思想。这些都是需要在工作中完善和改进的。
2、数据库开发
数据库是伴随着项目以来用的最多最平凡的技术。以前对数据库只是会一些简单常用的 *** 作,经过这一年项目的实战,对数据库的 *** 作增加了一些丰富的经验。为以后的工作和经验的积累都奠定了坚实的基础。同时在项目中还用到了oracel与access数据库,这是我的收获。
优点:能熟练的运用数据库技术进行开发。特别是对sql数据库的 *** 作,经过这么长时间的积累,基本上能合理的设计和新建数据库,同时在数据结构上也加强了对数据库的理解。通过项目的实践现在能熟练使用和编写多种sql语句。还掌握了一些关于数据库优化sql语句优化的方法,能进行一些简单的优化。
缺点:数据是一门比较先进的技术,并不是你会写一些sql语句,能建几个数据库你就是数据库工程师。要成为一个好的数据库管理员是要经过长时间的工作积累。针对自己的不足,在以后的工作和学习中多接触,多运用新的知识点。充实自己的经验和知识储备。
二、团队协作
上面的成功与收获,除了自身努力外,以及公司的支持。是这个团队铸造了我。我们这个团队也是因为有了我们这些拼搏协作的队员,使得它成为一个具有务实、拼搏、创新精神的团队。我与软件研发小组是一个整体,这里的团队总结也就是我在这个团队中的收获。
务实:公司下发的任务,下发的工作,件件都是用心去做的。我们这个团队中没有一个人在工作的时候做了工作以外的事情,都是实实在在的做跟工作相关对公司有益的事情。相信在伍经理的带领下现在是这样,以后同样也是这样。
拼搏:公司给的每一个任务不管它多难,如果工作没有完成我们会晚上加班,也要尽可能的完成当天的工作。如果工作实在忙,为了赶进度我们放弃周末休息时间也要尽可能的使项目提前。
创新:现在我们开始项目的时候都会进行研讨,一般都会进行一个效率和逻辑的分析与讨论,保证程序正确的前提尽可能的提高程序的效率。
互助:我们小组内只要任何一个人出现技术或其它的问题,我们都会彼此都会尽可能的去帮助他。不会因为某一个人而拖住整个项目滞后。
交流:我们在项目中会及时沟通自己的收获,特别是一些针对性的技术问题。这样可以省了很多重复研究的时间,这是一笔很可观的时间。
在交流中只要我会的,我懂的,我不会去吝啬。我会积极的去与你交流,我的团队名言“人强团则强,人弱团则削”。
三、个人成长
通过公司这快一年的锻炼与学习我真的进步了很多,不管从技术上还是做事上,都不像以前那样了。我在公司学到的懂得的使我飞速成长。
技术上:不管从语言上还是做事的逻辑上都得到了很大的的提高。现在在软件小组里面自己能独立完成一部分工作,承担自己的责任。
【篇三】程序员个人年终工作总结
光阴如梭,半年的工作转瞬即将成为历史,伴随着新年钟声的临近,我们依依惜别硕果累累的20_年,满怀热情的迎来即将到来的20XX年。在这年终之际,现对来公司一年来的时间里所作的工作汇报如下:
1、正义erp项目的编码工作。了解新疆正义项目的背景、及计划安排,熟悉正义公司制度及业务流程,再到熟悉新能开发模式,之后我根据需求调研报告,从基本的数据库创建,到编码,完成了销售部、生产部、采购部、质检部四个模块的基本单据的制单、审核、选单、查询、打印等系列的编码工作完成了正义项目的模块测试及流程测试。
通过这段时间的努力,使我个人的耐心、细心程度及对工作的合理安排得到了锻炼,学会了在繁忙之中找条理,危难之中找希望。同时自己也有一些不足之处,一些细节地方技术上还不太成熟,还需加以学习与钻研。
2、、正义erp项目的实施工作。从十一月初开始进行正义项目的实施,每天早起赶在企业上班前赶到企业进行erp的实施。实施期间主要是软件的安装实施及对企业的erp系统的使用人员进行软件使用培训纪录客户使用过程中出现的问题,晚上下班后加班加点将每天的小错误及客户变更修改完毕。
通过这项工作,使我原本欠缺的业务能力得到了很大的提高,并学到了很多与客户交流的技巧及业务上的知识,更加明晰了erp系统的流程。但离一个成功程序开发人员的标准还差得很远,在今后工作中,定会多多注意,加以改善。
3、帮助和使用手册文档的编写。帮助的编写使我熟悉了dreameweaver和fireworks的使用,为后期的oa开发也奠定一定的基础,使用说明的编写,使我更加加深了项目开发的整体思路与技术要点,总结了前期开发和实施中碰到的问题,并又一次的对软件整体进行了测试,对暴露出的小bug进行了最后的修改。
4、利用工作之余的休息时间加强学习。平时注意收集有关pb方面的资料文件,提高自己的处理新问题和解决新问题的能力,并加强学习java及oa方面的知识(现转为学习.net),为后期的工作打好基础。
以上为本人粗略的个人工作小结,请领导审阅,如工作上有不到之处,请领导不吝指出,以便本人及时改正,从而能更好地工作。
展望临近的20XX年,我会更加努力、工作上认真负责,再接再厉,更上一层楼。相信自己会完成新的任务,能迎接新的挑战。
通过本次课程设计,使我对《数据结构》这门课程有了更深入的理解。《数据结构》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。一个人的力量是有限的,要想把课程设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。再总体解决大的问题。这样做起来不仅有条理也使问题得到了轻松的解决。
在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的极简单的课程制作,可是平心而论,也耗费了我不少的心血,这就让我不得不佩服开发技术的前辈,才意识到老一辈对我们社会的付出,为了人们的生活更美好,他们为我们社会所付出多少心血啊!
对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一禅配份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!
通过这次的课程设计我对于专业课的学习有了禅洞更加深刻的认识,以为现在学贺袭枯的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。以后努力学好每门专业课,让自己拥有更多的知识,才能解决更多的问题!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)