debug,菜鸟必备的求生技能
突然想写个关于 debug 的文章,来纪念我2天前被自己坑的蠢事……
前两天,项目的四期送去电科院审查了。因为一些不可描述的原因,我很不喜欢四期。做起来就很烦~临近验收,发现了个比较严重的bug,记录里有 附件 的记录保存后再查看都会导致记录无法查看。下午我在那边找了2小时,也没定位到问题具体在哪边。最后只想着要把附件这个属性隐藏掉,不给别人选了。后来晚上去吃个饭,回来扫了眼控制台,突然发现了问题所在。原来附件里 .xxx 的小数点被过滤器给拦截了。于是很快就改好了问题,然而却要等待升级,然后就通宵了,遭了波重。
想起培训时,看起来有点虚胖,脸色有点苍白,永远很乐观的讲师会一再的和我们强调,debug 能力将会是伴随程序员整个职业生涯的法宝。到了项目里就是干活的,没人会给你安上 “新人”的角色,什么新人不新人的都是你们自己以为的。到时陌生的框架与业务逻辑要怎么看?全靠 debug。
记得培训时,MVC之间的逻辑,从前台走到后台,对于初次接触的人来说简直难到飞起来了。听了2天课也不是很懂。于是周末在家 debug,看数据在内存走来走去了2天。再去上课,突然就感觉自己懂了不少。debug 代码的过程,就好比抄书一样,并不是不 debug 时就看不懂代码了。而是 debug 时人会更专注的去看代码,不知不觉之间就会理解代码的意思。
那时,我以为我懂debug了,不就是三个层嘛,不是这层出错了就是那层出错了,太简单了!
然而那时写的项目是在太简单了,简单到起个服务,我那电脑最多几十秒就起来了。然而进了项目,仅我们组我负责的模块,起个项目就至少10来分钟了。量一大了,就突然间不会 debug 了,感觉自己像个无头苍蝇一般。
那时,我debug时不喜欢进 debug 窗口,项目经理常常喷我,诶,你不进这个窗口你怎么看呀?什么什么的……那时我说,进了这个窗口,代码的窗口太小了,看得不爽。
然而现在我也爱上了debug视图。很有用,下方控制台会打印信息,左边的视图可以清楚的看到变量在每一行有什么变动的视图,上面可以控制断点……
我的同事,和我一样也是培训班出生。可能这就是蛇鼠一窝?然而他们的只有3个半月,说是老师上课根本没教过 debug 怎么用,java就用syso,前台就用alert 来打断点……想想还是有点坑的,不过他们的机构也是能把自己的学员都硬给推走,给个入门的渠道,也算是,还剩点良心吧!
培训时没有学过debug的结果就是,把那会欠下的学习加班补回来。其中一人在学校时就自学过,培训时也是他们班学的挺好的,适应起来还好。另一人就惨了,本来就不怎么会,只能硬着头皮学……
公司是以赚钱为目标的,资本是压榨每个最大的劳动力。每个人都会很忙,没有人有太多空闲的时间去教你怎么用一个东西的。顶多授之以鱼,帮你一时,而这也是种情分。若是别人不帮你呢?也没什么怨言。
我来时,正是项目最后一个老员工待的最后一周,他把版本交接给了我对面那人。然而却是我和另一人一人一半接过整个项目。业务什么都不懂,技术吧,学的就那样。6个月,顶多是能干活。那能怎么办呢~公司雇人来就是解决问题的。
就 debug 一点一点理解业务逻辑。刚来的第一个版本,问题狂报,我们组还上了个安全代码。前台加密后台解密,搞得好多地方漏加密或是多解密。模块摊掉了就。没办法,只能硬解决,一步一步跟着代码走,看看变量传到后台时是什么样的,发现是加密后的,然后在后台加一层解密。有时被加了两层密,就搜前台……
之后,现场的电话也给我打起来了,长这么大,第一次被人叫 X工 的称呼。工人吗……其实确实和上世纪纺织厂的工人没什么区别。只是多了点改变世界的妄想,可能看那句叫 “write code,change world” 的标语看多了,产生错觉了吧!
有段时间,很怕手机响起。因为一响就意味着现场报问题了。一直都怕打电话,感觉打起电话说话很尴尬。这几个月下来已经不怕了。
再过段时间,开始试着解决现场报过来的问题。让他们把日志发过来,我就看……发现其实和控制台报的信息一模一样。记得有个问题看了,当时看了没看出什么名堂来。因为是只有一个现场报这个问题,不是很紧急。10多天后改另一个问题时断点经过那边,突然发现了其中的玄机。和现场实施配合解决了,真的让人很开心。问题是这样的,只有他们现场的环境的字段输入数字时,不自动补3个0,其他现场都会补。然后我们这边的 “设计”说,他们现场有问题,就他们经常会报一些稀奇古怪的问题出来~上一任开发都被他们现场烦死得了~
结果是因为配置页面与我们这边有差异引起来的差错,现场实施说,困扰现场许久的问题解决了,谢谢!
是的,在我看来很小的问题,在现场会被许多用户用到的。改善一点点,对于经常使用那边功能的用户来说都是很大的改变了。软件变好,网页使用方便是会被用户感受到的,就像微信,版本更新会引发大量推文与分析。
本想写个纯 debug技术 的文章的,想想我也没用很久,就结合自己经历带着写了点。总的来说,我认为 debug 就是排查错误的能力中的一部分,它是必要组成部分,却不是全部。来了问题,首先是要冷静,不能烦躁,烦躁起来会遗漏掉一些看似不起眼的信息。就像我前两天,没第一时间看控制台,在那急躁了起来。最后就很坑。
来了问题,先分析问题产生的原因,是脏数据或异常操作?不同环境之间的差异,先排查自己能确定的部分如配置信息或代码里有没有加开关之类的,最后再去怀疑现场服务问题。事实上,现场服务起的往往没错。找bug时,先看控制台,再看网页上的报错,往往报错信息就告诉自己该怎么做了。想法设法的进断点,进了断点,问题就不是问题了。只是进断点之前的前置条件需要许久时间。
用的多了,自然就会了。想想还是感谢那时培训时,讲师跟我们讲了很多debug的技巧,不然前段时间才进公司的这段日子,会更难熬过来吧!
debug,菜鸟必备的求生技能的更多相关文章
- centos7系统管理和运维实战——运维必备的网络管理技能(1)
运维必备的网络管理技能 一.网络管理协议: 1.简单的两个概念: DHCP(动态主机配置协议):如果网络结构要更改,需要从新初始化网络参数,手机用动态主机配置协议可以避免这个问题.客户端可以从D ...
- 「编程羽录」上线,程序员必备的这些技能你能get到嘛?
大家好,我是小羽. 好久不见,给大家带来个好消息,小羽的全新专题「编程羽录」系列正式上新,主要是介绍一些关于面试题和经验总结的文章. 会为大家提供一些技术栈之外,程序员还需要的其他方面硬核知识,做到全 ...
- 现代Web应用开发者必备的六大技能
过去,应用开发需要注重大量的专业知识,程序员只需关注单一的语言(比如COBOL.RPG.C++等),并利用该语言创建应用.而如今,时代在变迁.Web不再是单单关注独立的一面.相反,一个现代化的Web应 ...
- DevOps 工程师成长日记系列一:必备知识与技能组合
原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737 ...
- 刚接触Linux,菜鸟必备的小知识点(一)
身为一个将要大四的学生,而且还是学计算机的没有接触过linux简直是羞愧难当.这个假期做了一个软件测试员,必须要熟悉linux的操作,所以对于我这个菜鸟我也就说几点比较重要的小知识点吧. 第一.cd指 ...
- 菜鸟必备教程,ajax与xml交互传输数据。
今天,公司让学习ajax,然而我并不会,着急到爆炸,boom~~啥卡拉咔.看着教程一步一步摸索,写出来交互页面,写代码真的好惆怅啊. 额,不说废话,下面是源代码. 首先是ajax的代码,注释真的很重要 ...
- 超赞!UX写手必备技能
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 今天,小编非常荣幸能与大家一起分享一些优秀UX 写手必备的成功技能: 1.开篇抓住用户的心 MBE曾 ...
- Java架构师必备技能:docker使用大全
前言 java工程师成长为架构师是一个艰难且耗费心力的过程,不仅仅需要熟悉java体系内相关的技术,同时要掌握许多运维相关的操作技能,随着k8s逐渐成为微服务持续集成开发难以越过的基础设施之后,d ...
- 实训随笔2:Git Gui——拯救菜鸟的工具
熟练使用git进行多人协作开发,是程序猿必备的专业技能之一,可惜我等实在太菜搞不来复杂的命令行. 幸好除了Git Bash还有一个Git gui存在——专门为了拯救我们这些菜鸡程序猿而存在的工具. 下 ...
随机推荐
- windows server 2008 r2 x64 enterprise service pack1中aspjpeg.dll安装
官网地址:http://persits.com/ 64位:http://www.persits.com/aspjpeg64.exe sn:lptn9dQO1enAePAXB2wFaCZawYWzfm0 ...
- Java中常用类(包装类扩展知识)
Java常用类有哪些? 八大基本数据类型的包装类 包装类均位于java.lang包中,包装类和基本数据类型的对应关系如下表: 基本数据类型 包装类 byte Byte boolean Boolean ...
- [UE4]Spin Box,数字输入,可拖动
一.Spin Box在Input组下 二.Spin Box的文字样式可以在Spin Box.Display中修改 三.Spin Box事件 1.On Value Changed:值改变时触发 2.On ...
- autofac中文文档
https://autofaccn.readthedocs.io/zh/latest/index.html
- phpwind v9存在命令执行漏洞(登陆后台)
已知漏洞:https://www.seebug.org/vuldb/ssvid-94465 phpwind v9最新版存在命令执行漏洞(登陆后台) Phpwind_v9.0.2(最新版),phpwin ...
- 把已经安装到C盘的软件完美移动到D盘
背景信息 今天早上在安装软件的时候发现C盘爆满,只剩下最后10G了.而我要安装的玩意儿必须装到C盘. 靠清理垃圾文件来解决并不是一个好方法,实际上通常垃圾文件占用很少,而且就算清理了,也还会再出现. ...
- 如何在idea里面新建一个maven项目,然后在这个maven项目里创建多个子模块
如何在idea里面配置maven我这里就不多说了 先新建一个maven项目作为总的管理项目 不用勾选什么,直接下一步 这样子一个普通的maven项目就创建成功了. 因为这个项目是用来管理多个子模块的, ...
- tomcat advanced (RUNNING)
1. 1. tomcat
- SpringBoot 之 thymeleaf
thymeleaf 的maven 配置我们都知道: <dependency> <groupId>org.springframework.boot</groupId> ...
- leetcode146
public class LRUCache { ; ; long sernumbers; long SerNumbers { get { if (sernumbers <= long.MaxVa ...