系统的掌握软件调试技术之后,最直接的好处就是能高效快速地排查项目中遇到的各式各样难题。
在了解引发异常的常见原因后,在编写代码时更小心
在系统地了解引发C++软件异常原因之后,能让我们在编写代码时更加谨慎、考虑更加全面,从编码阶段就把一些潜在的问题给规避掉,将问题扼杀在萌芽中。
汇编语言接触的多了,能更好地理解软件底层的运行机制
在时我们在排查软件异常时,特别是在缺乏Pdb符号库文件时,我们需要用IDA查看相关二进制文件的汇编代码上下文去辅助分析。
软件崩溃一般是崩溃在某条汇编指令上,查看汇编代码上下文才能看出为什么会崩溃,可以查看汇编代码去辅助分析发生崩溃的原因。汇编代码熟悉了,就能更好地理解C++程序在CPU中是如何运行的,就能理解很多编程中之前理解不了的问题。
熟悉汇编代码,不仅可以辅助排查C++软件异常问题,还可以理解很多高级语言不好理解的编程细节(从汇编代码的角度可以看到代码的完整执行细节)!汇编代码才能最直接、最本真地反映出具体的细节!很多高级语言难以理解的编程点和细节,从汇编的角度去看,要好理解很多!
排查问题多了,风控问题场景和排查经验就多了,处理新问题就更加得心应手了
排查的问题越多,见识的问题场景就越多,积累和经验就越多,这样在排查新的问题时手段就更多,思路会更加开阔,更加得心应手,定位问题的速度会更快。
在排查问题的过程中,可以主动去发掘学习的机会,去扩充自己的视野
不要将自己局限在自己负责的那些模块中,从其他人负责模块问题中也能发掘一些学习的机会。比如在和兄弟组一起联调排查问题时,在帮他们负责模块的异常崩溃是地,可以查看到他们开发组的代码,可以了解他们代码中好的设计思想。也可以了解到他们模块中业务流程,对把握整个系统的业务流程有很大的促进作用。可以捣鼓捣鼓他们经常使用的一些分析工具。
很多人在排查问题的过程中,确定问题出在其他人维护的模块中,就直接把问题抛出去了,后续也不再跟进了!其实我们需要有刨根问底的精神,要搞清楚问题的来龙去脉,这类其他团队维护的模块问题,也是扩充我们视野和积累问题场景与素材的重要来源。对于这类其他团队维护的模块问题,我们要积极主动地协助他们去排查定位,去主动挖掘问题中的诸多细节,努力去搞清楚问题的起因与解决办法,在这个过程中,会积累很多宝贵的素材和经验!
我们在日常工作中,要积极主动地发掘这样的学习机会,这些能效地扩充我们的视野和认知。
在问题中进步,在问题中总结
在问题排查出来后,要积极进行思考和总结,进行一些扩散性的延伸与归纳。通过项目实战,能学到很多经过实战检验的细节点,能搞懂以前学习时无法理解的知识点,能有效地扩充自己的认知范围,对一些要点能有更进一步的理解和认识。然后把这些理解与认知再用到项目实践中,不断的扩充和细化。在积累到大量的问题场景与素材基础上,进行积极的思考与串联,进行详细的整理、归纳与总结,可以形成一套属于自己的完整的知识技能体系。
通过排查问题去积累素材,可以用到日常的技术分享与培训中
在排查问题的过程,可以将dump文件、pdb文件、相关代码截图和二进制文件(可能需要用IDA查看二进制文件的汇编代码上下文)等作为案例的素材保存下来,以方便以后去查看,也可以为后面的技术分享与培训积累大量的案例和素材。有大量实战实例的技术分享,内容会更加丰富,更加具有实战性。