程序员的bug修复宝典_找程序员修复bug要我发源代码-程序员宅基地

技术标签: 经验总结  bug修复  代码人生  

前言

bug, 又名程序缺陷或者程序漏洞, 是每个程序员每天都回避不了的东西。程序员对bug的感情可谓是五味杂陈:一方面bug非常可恶,尤其是一些偶现的bug,它强大到可以摧毁一个优秀程序员的意志;另一方面很多bug又是程序员自己亲手写下的,无奈之余只能自嘲一句:不写bug我们就要失业了!

作为一名职业程序员,同时也是一名开源创作者, 夸张点说,我解过的bug可以绕地球一圈, 每天写bug解bug几乎是我的日常。

但是,作为一个善于思考和总结的技术up主,我怎么能止步于每天写bug和解bug呢?更何况,人生在世,总得有点追求。既然我不能够阻止bug的产生,那么就让我总结一点bug的修复技巧,让bug消失地更快点吧!


1.bug修复的生命周期

中医讲究"望闻问切",其实修复一个bug就像给病人看一场病,本质上是相通的。

当我们遇到一个bug(问题)的时候,一般我们需要经历如下6个步骤:

  • 1.了解bug。我们首先需要到底出了什么bug,现象是什么,怎样发生的。
  • 2.复现bug。在了解了bug的大致情况之后,我们需要能够找到复现的路径,这就为后面bug的定位提供可靠的依据。
  • 3.定位bug。当有了稳定的复现途径之后,要做的就是打断点、打日志进行调试,来一步一步分析和定位bug,到底是那块代码导致的错误。
  • 4.确认bug。当我们定位到bug出错的地方之后,我们就需要分析这到底是不是bug。如果是bug,那么这个bug出现的根源是什么,到底能不能解决。
  • 5.修复bug。在明确了bug的根本原因之后,下面就需要发挥我们的聪明才智去修复这个bug了。
  • 6.验证bug。并不是每次我们修复完bug之后就可以万事大吉了,此时我们还需要去重现bug以确保bug被真正修复。除此之外,有条件的我们还需要去验证相关场景,以保证修复该bug不会引入其他bug。

以上可以总结为12字方针–"了解、复现、定位、确认、修复、验证"bug。一般在稍微大一点的公司,都会有对应的流程对bug的修复进行流程控制,最终形成闭环。

可以看到的是,其实修复bug只是解决一个bug的6个步骤中的其中一步。很多刚刚参与工作的程序员经常犯的错误就是一遇到bug,就开始漫无目的地看代码或者是上网各种瞎搜索,又或者各种无脑问,最后搞了一圈可能连自己要解决的bug到底是什么都不知道,这样解决bug的效率可想而知。

可能读到这的你此刻非常想问:怎样才可以更快地修复一个bug呢?那么下面我就根据上面讲的六个步骤来分别讲解一下对应的技巧。


2.解决bug的艺术

在我看来,修复一个bug是相对容易的。因为修复一个bug的方法可能有很多种,但是如何从根本上解决一个bug,并保证这个bug下次不再复现的话,其实是非常难的,这就需要我们学习一下解决bug的艺术。

2.1 了解bug

俗话说,知己知彼百战不殆。bug修复的第一步当然是先了解bug了。

<
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xuexiangjys/article/details/111827819

智能推荐

Spring Boot项目中pom.xml文件各标签详解-程序员宅基地

文章浏览阅读5k次,点赞13次,收藏31次。在Spring Boot工程中,pom.xml文件是maven项目的配置基础,它让我们的项目自动导入了很多相关的依赖,下面以我曾经开发过的一个简单项目中的pom.xml文件为例,对文件配置进行部分注释。

Windows10下bazel编译tensorflow的graph_transforms源码用于.pb模型压缩,过程之艰辛让你不敢置信-程序员宅基地

文章浏览阅读1k次。1、安装bazel 3.7.2版本2、安装MSYS22、查看自己电脑的硬件cuda版本,从官网下载安装CUDA 11.1和cuDNN8.2

spark sql 在mysql的应用实践-程序员宅基地

文章浏览阅读406次。前言目前spark sql 主要应用在structure streaming、etl 和&nbsp;machine learning 的场景上,&nbsp;它能对结构化的数据进行存储和操作,结构化的数据可以来自HIve、JSON、Parquet、JDBC/ODBC等数据源。由于部门对数据的准确性,一致性和维护等等要求等业务特点,我们选择mysql使用jdbc的方式作为我们的数据源,spark ...

关于nacos启动时防火墙开启8848的坑_nacos 防火墙-程序员宅基地

文章浏览阅读2.3k次。nacos的坑_nacos 防火墙

css超出两行省略号没效果,Css 设置超过再两行显示省略号-程序员宅基地

文章浏览阅读2.8k次。大部分场景都是超过一行就显示...{{item.name}}{{item.name}}export default {return {item: {name:'this is a very long name,this is a very long name,this is a very long name'}}}.other-product-item {text-overflow: -o-ell..._-o-ellipsis-lastline 属性无效

@程序员,你哄女朋友要是有写代码那么6,你早就脱单了-程序员宅基地

文章浏览阅读3.3k次。一对情侣吵架后冷战,过了N个小时以后.....女生:我觉得我说声我错了,你说一声我错了,这个事儿就算过了,我们不就和好了吗?男生觉得好像有道理,犹豫着说:要不你先说?女生..._花式哄女友代码html

随便推点

Java实现定时发送邮件的任务_java 实现每月10号发邮件通知-程序员宅基地

文章浏览阅读4k次,点赞4次,收藏17次。定时发送邮件定时任务使用Spring Task导入依赖创建任务类Cron 表达式详解邮件服务定时发送邮件功能定时任务使用Spring Task在 Springboot项目中可以通过注解的方式去实现定时任务导入依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-w_java 实现每月10号发邮件通知

mysql,load data local infile报错,loading local data is disabled,解决方法_02:22:10 load data local infile '/users/shiguancon-程序员宅基地

文章浏览阅读6.2k次,点赞4次,收藏16次。mysqlload data local infile报错loading local data is disabled操作系统 win10mysql版本 8.0.19解决方法一,打开local_infile在mysql shell中输入set global local_infile = 1;打开local_infile,然后输入quit退出mysql shell二,修改环境变量1,在mysql安装位置中找到MySQL Server 8.0\bin路径并复制,如C:\Program _02:22:10 load data local infile '/users/shiguancongdemacbookair/desktop/裤子

序列自动机【模板】_01序列 自动机 topcoder-程序员宅基地

文章浏览阅读169次。序列自动机算法分析序列自动机实质还是用空间换时间,它有一个数组 ne[i][j]表示原串s的第i位后面那26个字符j出现的最早的 位置。相当于建一棵树,根节点是一个空节点,它有26个孩子,表示每一个字母最早出现的位置举个例子:s = “abcca” (默认数组下标为1-5) (a–z==0–25) ne[0][0] =1,即字符串中出现的第一个字符’a’的位置为1 ne[1][1] = 2,即字符串距离下标1之后的字符’b’出现的第一个位置为2以此类推我们可以得到 ne[1][0] = _01序列 自动机 topcoder

熹乐科技范维肖:基于WebAssembly的JAMStack实时数字应用开发实践-程序员宅基地

文章浏览阅读821次。WebAssembly为应用顺畅运行,扫清低成本开销、快速部署的障碍_范维肖

embeddable python 安装pip和tkinter_python embeddable如何安装第三方包-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏9次。绿色版python如何安装pip和tkinter_python embeddable如何安装第三方包

ceph高可用集群部署_ceph高可用部署-程序员宅基地

文章浏览阅读984次。ceph高可用集群部署前言:为即将在生产环境搭建ceph高可用集群做准备,测试环境搭建ceph高可用集群进行性能和高可用测试,本次ceph集群版本为15.2.9 octopus;官网:https://ceph.com/GitHub:https://github.com/ceph/ceph一、Ceph简介​ (1)在学习Ceph之前,需要了解元数据的概念。元数据又称为中介数据、中继数据,为描述数据的数据。主要描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。通俗地_ceph高可用部署

推荐文章

热门文章

相关标签