谷歌浏览器调试之三脚猫

212 阅读4分钟

网上也有很多关于调试的技巧,小编断断续续也看过不少,可能由于技术以及所遇场景有限,很多技巧看完就忘了。能记住的也就是平时经常用的一些小技巧,废话少说直接来!

1.搜索search:

首先我需要快速的定位到我需要调试的代码处,谷歌f12调出开发者调试工具,底部如果压根没看到底部栏, Esc按钮快速切换底部导航栏的显示与隐藏,如果未看到search栏则在上图第一个箭头打开它,右侧的两个复选框

  • Ignore case 忽略大小写
  • Regular expression 正则匹配

输入关键词回车后,搜索栏会以风速展示与输入的关键词匹配到的全步代码,快到没朋友!直接点击想要去的那一行代码,鼠标焦点也帮你定位到源码。如下图:

2.断点breakpoint:

打断点是调试的最重要手段,当程序出现问题,首先想到的就是跟着程序走,一步一步看程序的变化,问题到底在哪一步。 点击A处的任意行即可生成断点,再次点击即可清除该断点。 也可以右击进入选择栏添加和移除(麻烦)

**一个酷的功能: **Add conditional breakpoint添加条件语句,只有当输入的条件语句为true时才会停住。 有个坑:Blackbox script不要点,否则断点就玩不了了。

注意: 新手会疑惑,我断点打在这了,程序执行为什么没有停在这,要知道你是页面已经加载完再打的断点还有毛用,所以你打完断点再f5刷新页面即可,让js重新执行到你断点处即可。 对于某个还未执行的函数,比如某个响应事件可以打完断点后再去鼠标点击页面元素,然后响应该事件进入断点跟进。

快捷键:

  • f10 跟进当前函数的下一行
  • f11 继续跟进当前代码行调用的另一个函数
  • Shift + f11 跳出当前函数回到前一个执行函数断点
  • Ctrl + \ 忽略当前断点跟进直到有下一个断点继续停住
  • Ctrl + f8 暂时禁用全部断点

技巧:

  1. 鼠标放在B处任意变量名上即可出现当前变量此时的值, 以及接受的参数selected_smalliddata,编写函数时尽量的减少全局变量,而是把数据以参数的形式传进来,这样也方便调试。
  2. 有时我们已经在多处添加的断点,如果一个个的去取消必须要找到它们(浪费时间),右侧C处即是全部断点的集合,右击可以单独移除、禁用、激活某个断点且不需要找它的位置,也可以移除全部,太方便了有木有!
  3. 跟进断点有时候需要跳到ToolFunc.getTargetItemData方法内部继续跟进f11,但是很多时候发现这个函数不是自己写的,代码太多太多,仿佛陷进深渊回不来了。那就需要跳出shift + f11, 但有时候依然跳不出来怎么办? 那就如图在151058处或自己想重点看的那一行打个断点,然后ctrl + \,完美!
  4. C那一栏还有Call Stack也很重要,它记录着函数的调用栈,就是来到当前函数前都执行过哪些函数
  5. D处,有些断点甚至刻意不需要知道它在哪一行,直接在Event Listener Breakpoints栏内指定该响应的事件即可断点(主要用在别人的页面)
  6. 打了很多断点,某一次测试想让他们不生效,但是又不能删除以免过一会儿还要一个个添加断点,这是后Ctrl + f8灵活的停用和激活断点非常666!

3.打印console:

打印信息是最清楚了,那些console.info之类的就不说了。

技巧:

  1. 连着上一个断点继续说,这边控制台起始就相当于进入到该断点的作用域了,比如直接在控制台A输入targetData回车即可看到它的数据内容B。打印this也是对的,this都给你了想干嘛请自便。
  2. B上右击选择Store as global variable,随即便打印C。顾名思义把对象的应用拷贝了一份给全局,属性名temp1,如果继续在其它打印的对象上再来一次,则出现temp2,以此类推!
  3. 既然是对象的引用那么E可以查看对象某个属性值,甚至是修改它F,然后继续断点跟进,这样省去了进来的数据不是想要测试的数据还必须重新来的麻烦!

结语:

暂且就说这么多,有机会再添加吧,byebye~~~!