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的技巧,不然前段时间才进公司的这段日子,会更难熬过来吧!

   

  

 

posted on 2018-12-22 22:30 唯心、tt 阅读() 评论() 编辑 收藏

版权声明:本文为weixin-tt原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/weixin-tt/p/10162729.html