Chrome中的JS调试

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术: VS   Sources面板

作者:刘铭聪

撰写时间:2022年419  

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下面介绍的是Chrome开发工具中最有用的面板 Sources。 Sources面板几乎是最常用到的Chrome功能面板,也是解决一般问题的主要功能面板。通常只要是开发遇到了 js报错或者其他代码问题,在审视一遍代码而一无所获之后打开Sources进行js断点调试,几乎能解决8成的代码问题。 js断点功能让人兴奋不已,以前只能在IE中靠alert弹出窗口调试js代码,那样的开发环境对于前端程序员来说简直是一场噩 梦。本篇介绍Sources的具体用法,帮助各位在开发过程中够愉快地调试js代码,而不是因它而发疯。 首先打开F12开发工具切换到Sources面板中


Sources功能面板是资源面板,他主要分为四个部分,四个部分并不是独立的,他们互相关联,互动共同实现一个重要的功能: 监控js在执行期的活动。简单来说就是断点啦。 首先我们来看区域1,它的功能有些类似于Resources面板,主要是显示网页加载的脚本文件:例如css, js等资源文件(它不包 含cookie,img等静态资源文件)。


区域1的导航条上有三个tab切换选项,他们都存有不同域名和环境下的js和css文件,我们首先来说明Sources(资源)选项的 作用: Sources: 包含该项目的静态资源文件。双击选中文件,该文件内容会在区域2中显示,如果你选中的是js文件,那么你可以在 区域2种单击行号进行断点调试,只要js执行到了你所标记的这一行,它会停止向下执行并且等待你的命令:


从上图可以看到js执行到断点处时各个区域的变化,首先是区域3中的Breakpoints记录信息会变高亮,然后是区域4中 Scope 选项中列出了断点处私有和公有的变量信息,这样,我可以很直观地知道,此时此刻js的执行状态。同样的,你可以把 鼠标放到区域2种的某个变量上,浏览器会弹出一个小框框,框框里面则是你悬浮其上的变量所有信息:


然后,你可以按F10跟着js执行的路径一步一步地走下去,如果你遇到了一个函数包含着另外一个函数,那么你可以按F11进 入到个函数中去观察它的代码执行活动。你也可以通过点击区域1底部的各个图标对js代码进行跟踪。不过我建议你使用 快捷键,故名思义,因为它比较快捷方便。不过怎么用完全按照个人习惯来吧。下图是各个按钮的作用功能。


在上图蓝色圆圈中数字,它们分别代表: 
1、停止断点调试 
2、不跳入函数中去,继续执行下一行代码(F10) 
3、跳入函数中去(F11) 
4、从执行的函数中跳出
5、禁用所有的断点,不做任何调试 6、程序运行时遇到异常时是否中断的开关 接下来在区域4种切换到Watch Expressions 选项,它的作用是为目前断点添加表达式,使得每次断点往下走一步都会执行 你写下的js代码。需要注意的是这个功能必须谨慎使用,因为这可能会导致你写下的监控代码段会不断地被执行。


为了避免你的调试代码重复执行,我们可以在调试时直接在console控制台上一次性地输出当前断点处的信息(推荐这样 做)。为了验证我们在console面板中拥有的是当前断点环境,我门可以对比断点执行前后的this值变化。


如果你觉得在断点的时候为了看一个变量必须借用console面板输出的方式来查看会比较麻烦,那么你可以更新最新版的 Chrome,它已经为我们解决了这个烦恼。为了方便开发者调试,在这一点上谷歌已经做到了极致,就在前几天更新过 Chrome以后,卤煮意外地发现了断点时监控环境变量的另外一种方式,这种方式极为清晰,在断点调试的时候,区域2中会自 动显示每个变量的值,每次代码往下走的时候这个值都回时时更新。这让开发者对当前环境变量几乎可以说是一目了然。 (此功能有一个小缺陷,那就是无法查看数组或者对象的具体索引和值,不过我相信google会改进它的。)


当你的项目已经线上,出现了一个bug,你修复了之后无法看到它真正在线上的效果,那么你可以在打开线上的项目,直接在 浏览器中修改代码然后看到效果。这样的效果往往是最直接的,这种方法也能帮你省去频繁验证发布的麻烦,毕竟身为前 端码农的你也一定会听到过后台(通常情况下是后台发布)大哥的抱怨:“XXX,测试通过了没,不要出现了哈,发布一次很麻烦 的!”。而在Chrome里面,只需要在区域2种直接修改,你就可以验证你的代码在线上是否可行。卤煮在此处只是指出该功能 的用法之一。其他的就凭诸位的聪明才智去想了。

即使在断点时,你也可以编辑代码,按ctrl+S保存之后,你会看到区域2的背景由白色变为浅色,而断点会重新开始执行。 回到区域1,Content script 选项开里面包含着一些第三方插件或者浏览器自身的js代码,经常它是被忽略的,实际上它的作 用很少。我们可以更多关注一下Snippets选项。还记得基础篇里面介绍的style吗?在里面我们可以编辑界面的css代码并 且即时看到它们的映射效果,同样地,在Sinppets中,我们也 可以编辑(重写)js代码片段。这些片段实际上就相当于你的js文 件一样,不同的是本地的js文件在编辑器里面编辑的,而此处,你是在浏览器中编写的。这些代码片段在浏览器刷新的时候 既不会消失,也不会执行,除非是你手动执行它。它可以存在你的本地浏览器中,即使关闭浏览器,再次打开时它依然还在那 里。它的主要作用可以使得我们编写一些项目的测试代码时提供便捷,你知道,如果你在编辑器上编写这些代码,在发布时 你必须为它们添加注释符号或者手动删除它们,而在浏览器上编写就不需要这样繁琐了。 在Snippets选项的空白处右键后选择弹出的new选项,建立一个你自己的新的文件,然后在区域2种编辑它。


Snippets的非常功能强大,它的许多隐藏功能还有待发掘。目前卤煮使用它是在记住调试片段、单元测试、少量的功能代码编写功能上。 最后我们看看js中时间丰富的监控功能,同上篇文章介绍的一样,Sources面板和Elements面板一样有监控事件的功能,而且 Sources中功能更加丰富,也更加强大。它的这部分功能集中在区域3中。我以下图为例,观察其作用。


从上到下,紫色圈内的数字的意义:

1、断点处的债堆栈,就是从该函数起,逐级追寻调用到他的函数名。例如: ?


2、在区域2中你的断点调试信息。当某个断点在执行的时候对应的信息会高亮,双击该处信息可以在区域2中快速定位。
3、添加的Dom监控信息。
4、击+ 并输入 URL 包含的字符串即可监听该 URL 的 Ajax 请求,输入内容就相当于 URL 的过滤器。如果什么都不填,那 么就监听所有 XHR 请求。一旦 XHR 调用触发时就会在 request.send() 的地方中断。 5、为网页添加各种类型的断点信息。如选中了Mouse中的某一项(click),当你在网页上出发这个动作(单击网页任意地方), 你浏览器就是立刻断点监控该事件。 值得再次重复一遍,Sources是一般的功能开发中最常用到也是最有用的功能面板,它里面的许多功能对于我们开发前端工 程来说是非常有帮助的。在web2.0时代的今天,我不推荐依然在自己的代码里面写调试信息的行为,因为这会然你的开发 变得繁琐。Chrome开发工具给我们提供的强大功能,我们应该好好利用之。这篇文章就到此结束,虽然有点繁琐,但总算基 本表述了卤煮使用经验和想法,希望对你有帮助。如果你觉得不错,请推荐一下本文并继续关注卤煮在的博客。在下一篇 中我将向大家介绍Chrome开发工具中的性能方面的调试。

Chrome中的JS调试相关推荐

  1. 【repost】一探前端开发中的JS调试技巧

    有请提示:文中涉及较多Gif演示动画,移动端请尽量在Wifi环境中阅读 前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问 ...

  2. 学习 前端开发中的JS调试技巧(断点)

    http://seejs.me/2016/03/27/jsdebugger/ alert() console.log(xxxx) JS断点调试 JS断点调试,即是在浏览器开发者工具中为JS代码添加断点 ...

  3. 一探前端开发中的JS调试技巧

    转自:http://seejs.me/2016/03/27/%E3%80%90%E5%8E%9F%E5%88%9B%E3%80%91%E4%B8%80%E6%8E%A2%E5%89%8D%E7%AB% ...

  4. 在 chrome 中使用 coap 调试插件 copper

    1.先去下载插件源码: https://github.com/mkovatsc/Copper4Cr.git 2.放到到 chrome 安装目录下: 例如:~\Google 下面 3.链接文件夹: 进入 ...

  5. android chrome html,在桌面chrome中调试android设备中的web页面

    准备工作 1, 桌面版chrome 2, Android设备(安装有chrome浏览器) 3, Android-sdk Android-sdk安装及设置 SKD安装 从http://developer ...

  6. 在Chrome 中调试Javascript

    在前面的两篇文章中我们讲了如何在IE中调试Javascript和在Visual Studio中调试Javascript,在本篇内容中,我们讲一下如何在谷歌 Chrome中调试Javascript. C ...

  7. Chrome 中的 JavaScript 断点设置和调试技巧

    你是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~,用 ...

  8. 为什么本地使用js或jquery操作cookie在谷歌浏览器chrome中不生效?

    2019独角兽企业重金招聘Python工程师标准>>> 为什么本地使用js或jquery操作cookie在谷歌浏览器chrome中不生效?新手学习js或jquery时,一般是在本地调 ...

  9. JS在html中加法器,JavaScript_JavaScript程序设计之JS调试,本文主要通过一个加法器,介 - phpStudy...

    JavaScript程序设计之JS调试 本文主要通过一个加法器,介绍JS如何调试.先上代码: 效果: test.html: 计算器 计算器 + = 计算 demo.js /** * Created b ...

最新文章

  1. 关于http://127.0.0.1:4723/wd/hub的解释
  2. http学习笔记(三):报文
  3. 我肝了一个月,给你写出了这本Java开发手册。
  4. 安卓ps2模拟器_安卓PSP模拟器评测:合金装备 和平步行者
  5. python输入数组_python怎么输入数组
  6. 对于局部变量_LabVIEW小白入门——局部变量
  7. 洒脱书法!值得学习的帅气高级手写字体设计
  8. MYSQL 源代码编绎脚本
  9. linux oracle异常处理,Oracle SQL 异常处理
  10. 立即更新!SonicWall 公司再次发布SMA 100 0day 固件更新
  11. python request返回的响应_Python爬虫库requests获取响应内容、响应状态码、响应头...
  12. 太原理工大学ICPC队介绍(2019版)
  13. 关于事业发展,雷林鹏教你如何找到方向?
  14. 一键搞定JavaEE应用,JRE+Tomcat+Mysql-JaveEE绿色运行环境JTM0.9版 (转载)
  15. linux grub 分辨率,修改grub分辨率
  16. Lambda表达详细介绍、全的不能全了!!
  17. java8之CompletableFuture
  18. 免费收听--第2版招投标软件项目管理实战课
  19. 存了半年工资去旅游,结果公司不批假!
  20. 【MM ECC VS S4】MM模块中ECC与S4的区别

热门文章

  1. Unity导出并制作window安装程序exe
  2. OPPO Enco Air 2 评测怎么样
  3. argparse用法总结
  4. Windows10 IIS配置PHP运行环境
  5. 电子商务企业品牌推广的逻辑与方法
  6. ImportError: cannot import name ‘json_util‘解决方案
  7. 关于软考的相关问题的总结
  8. Spket 破解方法很好的javascript脚本编译器
  9. 继续教育计算机组成原理a试卷,计算机组成原理试卷
  10. linux创建新的用户