chrome浏览器调试debugger

适用场景:

  1. 新项目新工程如何快速熟悉整体代码,快速定位问题
  2. 本地环境无法启动,只能在预发或者测试环境进行调试场景【老项目定位问题】
  3. 查看当前数据后,想要了解其他业务数据场景

1.1 Elements

elements使用过程中大部分是styles或者Computed
【可以通过styles或者直接在页面修改添加样式来完成页面样式调整】
其中也可以使用Event Listeners【事件监听】,事件监听可以查看每个DOM上涉及的事件。
:因为存在事件冒泡,每一项事件中可能会存在多个事件


以click事件为例,click事件下包含六个事件:

我们可以通过点击remove去剔除事件,或者鼠标悬停定位到具体某项,包括右侧超链接跳转到具体的url。

1.1.1)事件捕获机制

一般情况下,按照事件捕获,由顶层节点到目标节点逐个显示。
因此途中顺序是window -> dcoument -> html -> div


1.1.2) 打包构建方式

其次我们可以通过右侧超链接去判断,由于存在工程化打包,现有基本上打包输出模式,基本规则如下:
"文件名" + ".hash值" + “文件后缀名" + ": 标记位”
【根据不同的打包方式可能不一样,具体查看sourceMap使用】
一般携带明显标记【比如vue, react , dom, min, lib】基本是组件代码


综上所述,我们通过这种方式去定位到具体需要的业务场景。
除上述内容以外,Properties属性,主要是针对将DOM中对象化,可以查看具体明细。

1.2 NetWork + Sources

1.2.1)NetWork

如何快速定位到具体业务,也可以通过NetWork形式。
一般习惯使用“Fetch/XHR”形式找到具体接口调用,可以通过Initiator查看整体调用链


Request initiator chain:类似捕获机制,展示整体链路请求地址。

Request call stack:会将发起请求到各个组件调用整体链路都会展示出来。

从中我们可以看出:存在ajax代码,Vue底层源码以及业务代码
一般业务代码的形式如何看出?【一般本地代码都是显性展示具体的方法名称和链路,这里只谈隐性】
1)关注anoymous(匿名函数)
2)右侧超链接的地址(也是sourceMap打包后的路径模板)
可以通过上述规律点击后续超链接定位到具体的代码【代码都是一般都是打包后的,本地一般是源代码】
:如果想看看组件源码也可以从中点击跳转查看
点击后大概能猜测出是源码。
【有些生产代码中由于sourceMap设置是没有注释,且全部匿名化丑化,可以多关注看下业务代码写的错误提示或者拦截提示,能具体定位】
接下来就是使用Sources进行debugger

1.2.2) Sources

Sources使用先在页面代码中debugger,打好断点。
【一般建议是点击事件或者初始化事件,方便寻找代码源。如果知道具体断点位置,可以直接代码中debugger】


右侧主要介绍Scope和CallStack

a)Scope:作用域

其中一般作用域包含以下枚举值:

  • Local:本地
  • Closure:闭包
  • Script:脚本
  • Global:全局对象
  • Window:window对象

可以通过右侧作用域中关注到当前对象挂载内容,以及其他字段属性值。


其中有些字段值是找不到,可以通过原型链形式,通过原型对象prototype往上查找


其次函数中如果我们想要找到具体方法,查询目标对象TargetFunction,通过FunctionLocation跳转到具体的业务逻辑

b)Call Stack: 调用栈【同NetWork中Initiator流程】

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容