zoukankan      html  css  js  c++  java
  • 五种前端开发必备的调试技术

    在前端开发中,调试技术是必不可少的技能,本文将介绍五种前端开发必备的调试技术。

    1. Weinre移动调试

    2. DOM 断点

    3. debugger断点

    4. native方法hook

    5. 远程映射本地调试

    Weinre

    在移动上面开发调试是很复杂的,所以就有了weinre。安装weinre可以实现pc来调试手机页面,所以对于移动开发调试是很重要的哦~

    安装weinre

    weinre可以通过npm来安装:

    npm install -g weinre

    安装完之后,可执行下面的命令来启动:

    weinre --httpPort 8080 --boundHost -all-

    这样访问自己的127.0.0.1:8080按照提示在需要调试页面中插入一段js,然后就可以调试了。操作界面类似Chrome的DevTools,具体操作自己找资料去

    原理

    通过在需要调试的页面中引入一段weinre的js,实现pc和手机的socket通信,从而实现实时调试。

    Tips

    1. 如果你嫌每次都要在调试的页面引入js麻烦,可以做个书签或者chrome插件

    2. 如果嫌安装麻烦,可以使用phonegap的weinre:http://debug.phonegap.com/

    DOM断点

    DOM断点是一个Firebug和chrome DevTools提供的功能,当js需要操作打了断点的DOM时,会自动暂停,类似debugger调试。

    使用DOM断点

    1. 选择你要打断点的DOM节点

    2. 右键选择Break on..

    3. 选择断点类型

    Tips

    • Firebug中,DOM断点可以在Script> Breakpoints里面看到

    • chrome DevTools中,需要在Elements面板的DOM Breakpoints中看到

    javascript的debugger语句

    需要调试js的时候,我们可以给需要调试的地方通过debugger打断点,代码执行到断点就会暂停,这时候通过单步调试等方式就可以调试js代码

    使用javascript的断点

    在需要打断点的地方添加debugger:

    if (waldo) {

      debugger;

    }

    这时候打开console面板,就可以调试了

    Tips

    如果你不知道怎么调试,那么尽快看下:Chrome DevTools中断点部分的教程

    原生代码的hook调试

    因为浏览器自己会内置一些类似window对象这些原生的js方法,当你知道原生代码的确有问题,但是你又不能跟踪调试的时候,你就可以用这个方法了。

    举个例子

    例如我们注意到了一个DOM的属性值发生了变化,但是我们不知道是哪里的代码导致的变化,所以我们可以给DOM元素的setAttribute打个断点,代码如下:

    var oldFn = Element.prototype.setAttribute;

    Element.prototype.setAttribute = function (attr, value) {

        if (value === "the_droids_you_are_looking_for") {

            debugger;

        }

        oldFn.call(this, attr, value);

    }

    这样,当元素的属性发生了变化的时候,就会执行到断点,你就可以在断点的栈中找出调用的地方来~

    Tips

    这种方法不保证在所有浏览器中有效,比如ios的safari隐私模式下,我们就不可以修改localStorage方法

    远程映射本地调试

    当线上某个js/css出现问题,我们可以用代理的方式,将远程的文件代理到本地来实现远程映射调试。其实除了这个功能,还可以作为抓包工具,这在移动端是很重要的。推荐Mac用[charles Proxy](http://www.charlesproxy.com/),

    windows用户使用fiddle。

    这个就不多说了,直接上国内的几篇文章:

    http://www.cnblogs.com/tankxiao/archive/2012/02/06/2337728.html

    http://www.cnblogs.com/TankXiao/p/3063871.html


    小编注:

    最近有在做远程调试的东西,因为平板上的webview显示出来的页面和pc差异太大,而平板又没有像浏览器那样的debug功能。于是乎这样解决的:

    1. 数据线连接平板和pc,并安装驱动。

    2. 平板打开usb调试功能(设置->开发人员工具->usb调试),建议开启不锁定屏幕。

    3. 打开平板上的浏览器,输入‘about:debug’,此时浏览器上会看到报错

    4. 打开chrome,输入‘chrome://inspector’

    5. inspect对应的页面就可以debug了。


    转自: https://segmentfault.com/a/1190000000340291

    作者: weakish

  • 相关阅读:
    2018.7.9 模拟赛
    树状数组||归并排序求逆序对+离散化 nlogn
    LCS nlogn
    孤岛营救问题
    [POJ 3621] Sighting Cows
    树状数组求LIS
    nlogn求逆序对&&陌上花开
    最长可重区间集
    LCA模板
    [BZOJ] 4196 [Noi2015]软件包管理器
  • 原文地址:https://www.cnblogs.com/liuyanan/p/5503969.html
Copyright © 2011-2022 走看看