夜听城嚣 夜听城嚣
首页
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 前端基建与架构
  • 专题分享

    • Git入门与开发
    • 前端面试题汇总
    • HTML和CSS知识点
  • 项目实践
  • 抓包工具
  • 知识管理
  • 工程部署
  • 团队规范
bug知多少
  • 少年歌行
  • 青年随笔
  • 文海泛舟
  • 此事躬行

    • 项目各工种是如何协作的
    • TBA课程学习
收藏

dwfrost

前端界的小学生
首页
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 前端基建与架构
  • 专题分享

    • Git入门与开发
    • 前端面试题汇总
    • HTML和CSS知识点
  • 项目实践
  • 抓包工具
  • 知识管理
  • 工程部署
  • 团队规范
bug知多少
  • 少年歌行
  • 青年随笔
  • 文海泛舟
  • 此事躬行

    • 项目各工种是如何协作的
    • TBA课程学习
收藏
  • chrome控制台怎么复制对象
  • 小程序键盘弹起后顶起自定义导航问题
  • node子进程如何输出和关闭
  • 代理域名后webpack热更新失效及解决
  • 小程序scroll-view隐藏滚动条
  • npm包相关
  • electron下载慢解决
  • electron开发踩坑
  • mac升级后git找不到
  • electron打包找不到python
  • 安装imagemin-mozjpeg失败
  • 开发中的bug类型踩坑
  • 云端web项目开发踩坑
  • 如何快速定位bug
    • 问题描述
    • 定位方法
      • 输出日志
      • 断点调试
      • 模块删除法
    • 高级方法
      • 单元测试
      • 代码评审
      • 代码重构
  • bug知多少
frost
2025-02-20

如何快速定位bug

# 如何快速定位bug

# 问题描述

随着项目越大,代码演变得越复杂,bug也越来越难定位。那么从源头出发,如何快速定位bug呢?

# 定位方法

# 输出日志

根据代码逻辑,输出日志,然后根据日志定位问题。

在日志过滤时,为了避免过多日志干扰,可以使用/a|b/的方式进行筛选。 也可以在输出日志时,对同一逻辑链路的日志进行模块化,比如

console.log('module1_a: ', a);
console.log('module1_b: ', b);
1
2

在Vue项目中直接改变响应式变量,难以定位问题出现。此时可以通过watch监听变量,然后根据日志定位问题。

watch(
  () => store.state.json,
  (newValue) => {
    console.trace('newValue:', newValue);
  },
  {
    onTrack(e) {
      console.log('tracked:', e);
    },
    onTrigger(e) {
      console.log('triggered:', e);
    }
  }
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 断点调试

在代码中打断点,然后根据断点调试,找到问题所在。

# 模块删除法

有时候问题难以复现,或者问题复现的步骤太多,这时候可以考虑使用模块删除法。

将模块逐渐删除,然后根据日志定位问题。

# 高级方法

# 单元测试

在sdk开发中,单元测试是必不可少的。常用的单元测试框架有jest、mocha、ava等。

# 代码评审

在代码提交前,进行代码审查,可以发现一些潜在的问题。

# 代码重构

以新视角审视旧代码,重构代码,提高代码质量。这样可以清除代码中的坏味道,提高代码的可读性和可维护性,同时减少bug的出现。

上次更新: 2025/04/09, 17:50:35
云端web项目开发踩坑

← 云端web项目开发踩坑

最近更新
01
提交代码时修改commit消息
04-09
02
云端web项目开发踩坑
08-25
03
企微机器人
06-13
更多文章>
Theme by Vdoing | Copyright © 2021-2025 dwfrost | 粤ICP备2021118995号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×