巧用条件断点实现更好的调试

条件断点,顾名思义就是在断点上加个条件语句,当语句为真时才触发断点。那我们可以在这个语句中加入一些逻辑来达到一些调试目的并通过设置返回值永远为false来让断点不会被触发从而影响调试过程。

【不修改源码,来给代码加上console.log】

代码: a.htm


<html>

<script src="a.js"></script>

<body>

asdf

<div id="aa"></div>

</body>

</html>

a.js


setTimeout(function () {

for(var i=0;i<1000;i++){

document.getElementById("aa").innerHTML += i + "<br>";

}

},1000);

那我想在a.js的循环体中加上console.log(i)。我们可以修改源码保存,浏览器Ctrl+F5,即可生效。

但是:

1)有时不止是保存刷新即可,比如部署至测试环境后,需要svn签入,服务器同步等时间

2)调试结束后,源码中的调试代码可能会忘记删掉

现在介绍另一种做法:

1)浏览器(这里用chrome)开发者工具中,在循环体内打个断点

2)断点上右键,点击Edit Breakpoint。在弹出的的输入框中写上console.log(i)

3) F5刷新,日志就出来了

这么做的好处是:

1)不污染源码

2)快速

3)不停的f5啥的也不会丢失这个条件断点

这么做的不足是:

1)源码中在断点位置之上添加行或删除行,浏览器中断点的位置仍保留在原来设置的行号上,就会错位

2)源码中的console.log会在面板中显示来源位置,而通过条件断点加上的就没有(会显示来自VM),不过这个问题不大,可以从开发者工具的breakpoint栏中进行基本管理

【在特定情况下打断点】

在上面的例子中,我们希望i是100整数倍时打印出来,可以在条件断点中写:i%100==0 && console.log(i)

【进行一些代码逻辑修改】

在上面的例子中,我们希望i的步长变成2,可以在条件断点中写:!++i

时间: 2024-08-28 20:28:17

巧用条件断点实现更好的调试的相关文章

更简单的调试Release版本Optimize code的.NET程序集

由于JIT的优化在调试Release版本程序集往往没有足够的跟踪信息,比如查看clrstack发现PARAMETERS:= <no data>状态. 在程序运行目录下创建一个[程序集名称].ini文件,比如:MyLibrary.dll => MyLibrary.ini. [.NET Framework Debugging Control] GenerateTrackingInfo=1 AllowOptimize=0 更简单的调试Release版本Optimize code的.NET程序集

巧用开发者工具的控制台来调试页面中的js语句

因为要弄某网页的一个自动登陆工具,所以需要对此网页中的元素利用js进行选取和操作,复杂的js选取如果直接在头脑中想很容易出错,而且一旦出错也不好判断错误原因. 而浏览器带的开发者工具的控制台功能,就给我们提供了一个像在本地开发工具中调试程序一样便捷的功能. 比如要调试博客首页,鼠标右键选择页面中对应的元素,弹出的菜单选择审查元素: 假设我们要选取图中标题的a标签元素,它的id为homepage1_HomePageDays_DaysList_ctl00_DayList_TitleUrl_0,那么我

如何更方便地调试javascript代码

开发者工具 现在一般的浏览器都内置了开发者工具,快捷键F12可以打开,如Chrome浏览器下,Sources面板下找到对应的js文件 这是首选方法,但是对于SPA程序(比如easyui),可能找不到内嵌页面.所以如果是SPA程序,可能要想其它方法. vs下在js代码处断点 这种方法对于SPA内嵌页面也没有用,但是可以使用debugger关键字手动设置断点,如下. 如果是用IE的话,需要先去掉如下图中的两个选项,然后F12打开开发者工具,使用chrome只要打开开发者工具就可以.这种方法对于调试S

GDB 调试解析

GDB(GNU Debugger)是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行序 列,形成脚本.UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能. GDB主要帮忙你完成下面四个方面的功能: (1).启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. (2).可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式) (3).当

Bug调试(lldb)

原文网址:http://www.cnblogs.com/Twisted-Fate/p/4760156.html 今天博主有一些Bug调试的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. Xcode的Bug调试方法大概有以下几种: 1.断点,全局断点,条件断点配合Nslog找出Bug 2.静态分析工具:Analyze,静态检测内存 3.动态分析工具:Profile,其中最常用的是Leaks(检测内存泄露)和Allocations(检测内存溢出) 4.gdb调试:Xcode4.0之前的调

不得不说的谷歌开发者模式:谷歌调试模式调试js代码总结

谷歌浏览器对开发者来说是一个很好的工具,确实能给开发者提供很多的方便,这是工作一年多以来,一个感触.谷歌浏览器可以在前端跟踪值传递,就像我们使用myeclipse进行debug一样,谷歌浏览器提供了强大的功能,使得开发者可以在前端跟踪值传递. 只要安装了谷歌浏览器,我们就可以使用谷歌开发者模式进行代码的调试,按F12进入开发者模式. 1,首先我们来说一下谷歌浏览器的控制台console 进入谷歌开发者模式以后,我们点击console进入控制台,在这里,我们可以很方便的进行js代码的调试.通常情况

使用WinDbg内核调试[转]

Technorati 标签: windbg,内核调试 WINDOWS调试工具很强大,但是学习使用它们并不容易.特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器). 本教程的目标是给予一个已经有其他调试工具使用经验的开发者足够信息,使其能通过参考WINDOWS调试工具的帮助文件进行内核调试. 本文将假定开发者熟悉一般WINDOWS操作系统和进程的建立过程. 本文的重点是集成内核模式和用户态模式的图形化调试器WinDbg.KD在脚本和自动化调试中更有用,并且

GDB调试器使用总结

概述:GDB是linux下调试程序的神器,做为linux程序员,如果不能熟练的使用GDB进行程序调试,那将是很失败的事情.强大的功能使GDB的使用也变得比较复杂,如果是初学者肯定会比繁杂的命令吓到.下面是整理的一些我认为会比较有帮助的部分.下文中以">"开头的命令是linux的shell命令,以"(GDB)"开头的则是GDB内部命令. 0.转储功能(core dump): (1).开启转储功能:首先用 >ulimit -c 查看是否开启转储功能,如果命令

iOS中教你快速掌握LLDB调试技巧

摘要 LLDB是Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.平时用Xcode运行程序,实际走的都是LLDB.熟练使用LLDB,可以让你debug事半功倍. LLDB控制台 Xcode中内嵌了LLDB控制台,在Xcode中代码的下方,我们可以看到LLDB控制台. LLDB控制台平时会输出一些log信息.如果我们想输入命令调试,必须让程序进入暂停状态.让程序进入暂停状态的方式主要有2种: 1. 断点或者watchpoint: 在代码中设置一个断点(w