本帖最后由 yingliu 于 2020-1-2 17:42 编辑
Firefox 开发者工具(Devtools)团队与程序代码贡献者社群携手合作,针对 Firefox 72 进行一系列的更新改善。本文旨在说明已于 Firefox 开发者版本上线的 监控点(watchpoints)功能,请继续阅读,了解此功能的特点及使用方法。
监控点是什么?用途是什么?
你是否曾希望不必手动添加断点(breakpoint)或日志语句(log statements),就能知道程序代码对象中有哪些属性已被读取或设定?监控点(watchpoint)就是可以解决此问题的一种断点。
若在对象的属性加上一个监控点,每次用到该属性时,调试器 (debugger)就会在程序代码的那个位置上暂停。监控点有两种:get 和 set。get 会在属性被读取时暂停,而 set 则会在属性值变更时停下来。
在调试大型又复杂的程序代码库时,此监控点功能特别方便。因为在这种情况下,属性被设定/读取之处不太容易预测。
开始使用
如要设定监控点,请先暂时停止调试(debug),在调试器的 「Scopes」窗口中找到属性后,右键单击出菜单。展开断点菜单后,你可选择加上 set 或 get 的监控点。例如下面,我们想帮 obj.a 调试,所以要在上面加 set 监控点。
好,set 监控点加好了,以该属性右侧的蓝色监控点符号显示。这是程序代码中最简单的部分——让调试器告诉你属性已设好。只要按 resume(或 F8)即可继续。
调试器在第 7 行停下来,即设置 obj.a 之处。另外,请注意右上角有个暂停信息的黄色窗口,提示由于出现 set 监控点而造成中断。
删除监控点的方法和删除断点一样,只要按蓝色监控点的图标即可。
大功告成!此功能使用起来虽然简单,却是非常强大的调试工具。
实际操作
我们在进行监控点的实际操作时,曾碰到一个有趣的挑战。因为我们的团队必须让用户清楚了解我们运用了 Object.defineProperty,所以我们得确保调试器呈现的是原始值,而非 getter/setter 函数。
有几点必须特别提醒: - 监控点不适用于 getters 和 setters。
后续规划
开发者工具团队计划在控制台及其他多处加入可添加与查看监控点的功能,以便用户运用 DevTools(开发者工具)来查看对象。另外,我们也会继续优化此功能,也希望有你们的帮助和支持!
来源自 Mozilla 开发者博客
|