1.生产上的远程源码远程源码问题你不会用 sourcemap 定位吗?
2.国内最大的源码交易平台
3.利用好 git bisect 这把利器,帮助你快速定位疑难 bug
生产上的问题你不会用 sourcemap 定位吗?
生产上的问题你不会用 sourcemap 定位吗?
sourcemap 是一个以.map 为后缀的文件,它以 json 形式存储了源代码打包转换后的远程源码远程源码位置信息。它的定位定位主要作用是实现运行时代码和开发时代码都能拥有相同准确的信息提示。常见的远程源码远程源码开发时代码提示如上图所示,而运行时代码提示如上图所示,定位定位源码安装virtualbox运行时代码提示的远程源码远程源码信息不够详细准确。而 sourcemap 可以在不同的定位定位处理阶段中构建出运行时代码和开发时代码的映射关系,使得运行时代码也能够提供给我们详细而准确的远程源码远程源码信息,帮助我们在生产环境中快速定位到源代码中的定位定位位置。
要快速生成 sourcemap,远程源码远程源码前端构建工具有很多,定位定位这里列举两个常用的远程源码远程源码:vite 和 webpack。在 vite 中,定位定位只需要设置 build.sourcemap 的远程源码远程源码选项配置即可。在 webpack 中,则需要设置 devtool 的选项配置,值类型包括以下类型的cwv源码组合。
要使得sourcemap 发挥作用,除了生成对应的映射规则外,还需要一个解析工具负责将源代码和 sourcemap 规则真正进行映射。通常,浏览器、异常监控系统(如:sentry)和手动映射都可以完成此任务。浏览器通常会默认启用sourcemap 映射功能。在 Sentry 监控系统中,接入、异常捕获和添加 sourcemap 的流程如下:
首先,在 Sentry 监控平台上注册/登录拥有自己的账号,然后可以构建一个对应的项目,项目创建好后会生成一个 dsn,在接入 Sentry 时需要传入。其次,在项目入口文件(main.js)中初始化接入 Sentry 即可。经过以上处理,角色源码Sentry 已经可以自动获取到错误信息,但没有接入 sourcemap 的错误信息在 Sentry 中也无法进行快速定位。因此,下一步就是需要给 Sentry 上传 sourcemap 相关的文件。
在 .map 文件中有 mappings 字段,它以 Base VLQ 编码形式存储了映射到源代码行、列等信息。使用 Base VLQ 编码可以减少文件体积,因为它是一种压缩数字内容的编码方式。每个分号中的第一串英文用来表示代码的第几行、第几列的绝对位置,后面的都是相对于之前的位置做加减法。
sourcemap 的生成、解析及应用在前端开发中是非常重要的,希望本文能帮助你更好地理解及应用 sourcemap。同时,编写文章的源码茅台原则是首先保证自己有收获,其次,看看各位掘友对同一个问题都会有什么更好的方案。欢迎关注同名公众号《熊的猫》,文章会同步更新!
国内最大的源码交易平台
国内最大的源码交易平台是CSDN软件开发网。
CSDN软件开发网,作为国内知名的IT技术交流平台,已经发展成为国内最大的源码交易平台。它提供了广泛的源码资源,涵盖了各个开发领域,如Web开发、移动应用、数据库管理、人工智能等。这个平台不仅为开发者提供了丰富的源码参考,还搭建了一个源码买卖的市场,让开发者之间可以方便地进行源码的达人源码买卖交易。
CSDN源码交易平台的优势在于其资源的丰富性和交易的便捷性。平台上汇聚了大量的优质源码,这些源码往往由经验丰富的开发者上传,质量有保证。同时,平台提供了详尽的源码分类和搜索功能,帮助用户快速定位到所需的源码资源。交易流程也设计得十分简洁明了,从浏览源码、下单购买到完成交易,用户都能获得流畅的体验。
除了基本的源码交易服务,CSDN还提供了一系列的附加服务,如源码定制开发、技术咨询等,这些服务进一步增强了用户粘性,也为平台吸引了更多的专业开发者。举例来说,如果一个企业需要一套特定的管理系统源码,他们不仅可以在CSDN上找到现成的源码进行购买,还可以联系平台上的专业开发者进行定制开发,这种一站式的服务大大提升了交易效率和用户满意度。
综上所述,CSDN软件开发网以其丰富的源码资源、便捷的交易流程和完善的附加服务,稳坐国内最大源码交易平台的宝座。无论是对于需要源码的个人开发者,还是寻求技术解决方案的企业,CSDN都是一个值得信赖的选择。
利用好 git bisect 这把利器,帮助你快速定位疑难 bug
利用好 git bisect 这把利器,帮助你快速定位疑难 bug
使用git bisect二分法定位问题的基本步骤:
1. git bisect start [最近的出错的commitid] [较远的正确的commitid]
2. 测试相应的功能
3. git bisect good 标记正确
4. 直到出现问题则 标记错误 git bisect bad
5. 提示的commitid就是导致问题的那次提交
问题描述
我们以 Vue DevUI组件库的一个bug举例子
5dcb这一次commit,执行yarn build报错,报错信息如下:
我可以确定的是上一次发版本( dce4)是可以build成功的。
git bisect 简介
git bisect命令使用二分搜索算法来查找提交历史中的哪一次提交引入了错误。它几乎能让你闭着眼睛快速定位任何源码导致的问题,非常实用。
你只需要告诉这个命令一个包含该bug的坏commit ID和一个引入该bug之前的好commit ID,这个命令会用二分法在这两个提交之间选择一个中间的commit ID,切换到那个commit ID的代码,然后询问你这是好的commit ID还是坏的commit ID,你告诉它是好还是坏,然后它会不断缩小范围,直到找到那次引入bug的凶手commit ID。
这样我们就只需要分析那一次提交的代码,就能快速定位和解决这个bug(具体定位的时间取决于该次提交的代码量和你的经验),所以我们提交代码时一定要养成小批量提交的习惯,每次只提交一个小的独立功能,这样出问题了,定位起来会非常快。
接下来我就以 Vue DevUI之前出现过的一个bug为例,详细介绍下如何使用git bisect这把利器。
定位过程
其中5dcb这次是最近出现的有bug的提交,dce4这个是上一次发版本没问题的提交。
执行完启动bisect之后,马上就切到中间的一次提交啦,以下是打印结果:
可以看到已经切到以下提交:
执行命令:
构建成功,所以标记下good:
标记万good,马上又通过二分法,切到了一次新的提交:
再次执行build命令:
build失败了,出现了我们最早遇到的报错:
标记下bad,再一次切到中间的提交:
以此类推,不断地验证、标记、验证、标记...最终会提示我们那一次提交导致了这次的bug,提交者、提交时间、提交message等信息。
最终定位到出问题的commit:
github.com/DevCloudFE/v...
整个定位过程几乎是机械的操作,不需要了解项目源码,不需要了解最近谁提交了什么内容,只需要无脑地:验证、标记、验证、标记,最后git会告诉我们那一次提交出错。
这么香的工具,赶紧来试试吧!
问题分析
直到哪个commit出问题了,定位起来范围就小了很多。
如果平时提交代码又能很好地遵循小颗粒提交的话,bug呼之欲出。
这里必须表扬下我们DevUI的田主(Contributor)们,他们都养成了小颗粒提交的习惯,这次导致bug的提交c0c4cc1a,只提交了4个文件,涉及多行代码。
我们在其中搜索下document关键字,发现了两处,都在drawer-service.ts整个文件中:
一处是行的:
另一处是行的:
最终发现罪魁祸首就是行的代码!
破案!
此处@lnzhangsong我们的田主,有空麻烦修下这个bug。