前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BUG 定位分析方法

BUG 定位分析方法

作者头像
蛋未明
发布2021-09-10 15:05:58
4490
发布2021-09-10 15:05:58
举报
文章被收录于专栏:蛋未明的专栏

为了能够更好的协助大家定位疑难 bug 问题,这里总结一些自我的经验给到大家,希望对大家有所帮助

对于简单的 bug 大家轻松定位解决就可以了,但是对于疑难复杂的 bug 这里我们分为 5 个核心流程方法,其中包括:梳理流程、日志分析、最小路径、猜测排除、独立验证。

最小路径

遇到问题后,要第一时间了解该问题重现的最小路径,通过最小路径来判断该问题的严重性以及影响面。如果重现路径复杂,那么可以思考影响面应该比较小,如果重现路径简单,那么该问题影响面应该很大,必须要尽快解决。

梳理流程

磨刀不误砍柴工,不要以为自己非常了解自己写的代码逻辑,往往是太熟悉了反而丢失了细节。在遇到疑难病症之前,一定要重现梳理逻辑流程,绘制出相应的逻辑流转图,根据业务逻辑重现梳理一遍。这样可以协助自己更快的定位到问题。如果觉得麻烦,可以直接使用脑图来绘制,更为简单快捷。比如像这样

在这里插入图片描述
在这里插入图片描述
日志分析

在业务出现一些异常情况时,需要增加日志信息了辅助定位,需要在逻辑分叉处以及外部调用增加日志即可。比如 if else、catch 、接口调用、SDK 调用等等。比如下面这段伪代码,为了检查问题,增加了各种日志信息。

代码语言:javascript
复制
if(!id){
  log.info('id is not exist');
  return -1;
}
let mainInfo = api.get('main-info');
if(!mainInfo){
   log.error('get main info come out error, pls check');
   return -2;
}
let picList = api.get('pic-list');
if(!picList){
  log.error('get pic list come out error, pls check');
}
let commentList = api.get('comment-list');
if(!commentList){
  log.error('get comment list come out error, pls check');
}
return mainInfo;
猜测排除

在遇到问题后,要大胆的猜测,应该怀着任何都有可能出现问题的猜测,比如第三方库、系统调用等等,不要带着这部分肯定不会有问题的想法,把有可能出现问题的场景都列举出来。

猜测点

猜测说明

验证情况

for 循环异常

中途抛异常退出

SDK 调用返回异常

facebook 返回数据接口异常

获取系统 API 返回异常

获取定位信息系统存在缓存,导致更新不及时

独立验证

拿到猜测列表后,就逐一进行验证,这里需要注意的是所有的验证都必须是独立的,不能多项同时进行验证。

如果遇到不能重现的问题,无法找到最小重现路径的,因为影响面是可控的,因此只需要增加日志加强定位辅助判断即可,对于核心重要的模块应该加强跟进。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最小路径
  • 梳理流程
  • 日志分析
  • 猜测排除
  • 独立验证
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档