我大概是从 08、09 年从 Firebug 转入 Chrome Developer Tool,一直用到现在,越用越喜欢。我平时调错时常用的功能有:7 |: |/ D4 B- M
代码格式化, C0 I% x+ L* f' k5 S3 ?
可以将被压缩的代码自动展开
2 B8 d0 |; w; k- z8 N/ j实时代码编辑
( `2 K! l# ~7 E. {! P, V- v4 s 可以在运行时动态改变 JS 代码,并且不需要刷新页面就可以看到效果,一般用这个实时的在代码里插 console.log0 b+ B: D; L1 S2 W5 W+ `
DOM 事件/XHR 断点
# C) G% g2 R0 D% m; Z+ U 可以针对 DOM 结构改变/属性改变/键盘鼠标事件 等下断点,直接断到事件的第一个 listener 函数上。还可以对 XHR 请求下断点,断到发起请求的那一行代码上& M: M$ ]' n9 }' Z! S% S
调用栈分析9 V r# H/ j v8 G; d! I6 B0 l: p, P
这个非常常用,Scripts 面板下右上角的那一部分
: G$ S1 o: X6 i. C% v自动异常断点
& T! o4 o2 D5 ~! x* \: g 当代码执行出错时,可以自动断到出错的代码行上,直接分析出错时的运行时环境" I1 q5 ~. L) f2 W
分析 HTTP 请求
# O1 j0 v" M# c5 K5 Z5 X Network 面板下列出了所有的 HTTP 请求,可以很方便的查看请求内容、HTTP 头、请求时间等信息
6 J! f* s& C( v7 u4 t( j2 U2 X. @ 以线上代码出 Bug 为例。一般上手第一步是使用代码格式化功能将被压缩的线上代码展开,然后开启自动异常断点,尝试重现 Bug。当 Bug 出现时代码会自动断到出错的那一行。然后通过调用栈分析结合控制台找到最开始出错的那个函数上。一般的 Bug 到这里就算找出来了,但是如果这个 Bug 是在事件回调函数或者 XHR 回调函数上,就得结合 DOM 事件断点和 XHR 断点 进一步往上找哪个函数出错。另外,如果是发给服务器请求没有得到正确的 response,可以通过 Network 面板查看请求的参数、Cookie、HTTP 头是否有误。
6 y5 `6 t/ Y1 _% E2 t 另外,还可以通过 Charles/Nginx/Fiddler 等工具将远程 js 代码映射到自己的电脑上,免去了代码格式化的麻烦,还可以直接编辑。
/ G- T! \, I2 U+ I% Q5 c X& I/ C h, l( p, z9 S: U- ?
还有些比较小的 Tips:3 m/ w/ G0 B5 p, ]/ m
console.group/console.groupEnd 可以将 log 信息分组展示,看起来更舒服
3 V' E0 i5 ?+ y0 J+ _console.warn/console.error 可以输出 warning 和 error log
) d6 F& x1 c4 Y/ Z* {1 Kelement 面板右侧实时编辑的 css 样式,可以在 resource 面板里保存起来
- Y0 p1 R6 e9 g; D关于样式还有个技巧,Elements 面板右上角的 styles 栏,右侧有三个图标,功能依次是:根据当前元素创建一个 css 样式、模拟 :hover/:active 等伪类、颜色值类型选择。实用% b; r4 J0 F" _6 C* c- Y
resource 面板可以删除和修改 cookie/localstorage
/ `* L: J' {& w5 ^scripts 面板下的 ctrl+o 可以快速跳转脚本文件,ctrl+shift+o 快速跳转函数: O' T9 E1 j& K, O( h
右下角的齿轮图标里有个选项是开发者工具和网页左右分屏(Dock to the right,默认是上下分屏),宽屏必备
6 ]% |. x1 j* F1 e* b接上,还有个选项是禁用 Cookit,必点+ @& ~3 C7 H" M( {
接上,在选项面板里还可以手工编辑 user agent 和模拟触摸事件
' V4 ?9 D+ B9 q3 h最后说说 IE 6 的调试,我是这么个流程:
6 |7 V) Q# ?. \% N- h首先尝试在 Chrome 下重现该 Bug,如果能重现,就先把 Chrome 里能重现的 Bug 修了。确定 Chrome 里 OK,但是 IE 6 有问题,再继续下一步
" L ~3 u s+ l; x5 F到 IE 里首先尝试高版本 IE,比如 IE 9。E 9 的开发者工具还不错,也可以下断点,调用栈分析、控制台样样都有。如果 IE 9 里没问题,那就继续尝试 IE8,一直定位到能重现该问题的最高版本的 IE 上。即使是 IE 7,其开发者工具也还是勉强能用的……如果不幸的碰上一个 IE 6 only 的 Bug,那就只有继续下一步
4 b F& X! N) b0 z; c到这一步的话一般就是最苦逼的时刻。IE 6 实在是没有太好用的 JS 调试工具(据说 Visual Studio 可以调,我没用过,欢迎补充)。这时候一般就是二分+alert的土法定位到出错行,加上耐心和时间,还有一点点运气。这一步的话强烈推荐开 Fiddler。
8 Q7 w4 G6 M' M; T: y& V0 g& m+ i$ E8 w7 y
妇科医院 www.hspayy.com + T; h/ e: @$ B+ l3 L: _: v# t/ s
微创男科 www.ljpayy.com
/ b6 m( Z8 s0 V/ @) y& G! d6 K9 J装修论坛 www.qcwall.com |