看见网上很多人问怎么用chrome调试JavaScript代码,我也对这个问题抱着疑问,但是没有找到一篇能用的中文文章(可能我的google有问题),也不知道怎么点出一篇E文的,感觉作者写得不错,所以尽量按照原来的风格弄一篇中文的,希望对和我一样存在疑问的朋友有所帮助。如果高手路过,下面留言指点,或给与相关学习链接,谢谢。

下面我将通过一个例子让大家对chrome的调试功能有个大概的认识。

几个存在的bug:
    我发现调试功能中有个小bug(作者发现的),尤其是在打开调试窗口时打开控制窗口,我的chrome浏览器会像变魔术一样从屏幕上消失(在下面的调试过程中没有遇到这样的问题,可能是作者用的β版的吧,哈哈)。接下来的步骤将不再由我控制。我仅仅是用了一个很简单的测试页面就出了问题,不敢想象更大工作量下的情况。
    
    如果你设置了断点后关闭了调试工具,断点任然存在(在测试过程中发现对程序运行没有影响,但是再次启动调试工具后原来的断点会对调试产生影响)。

(以上问题,作者在MAC本本上调试出的问题,你不一定会碰到,不用在意)。

调试命令:
打开调试窗口后,你可以在底部的输入窗口中输入相关的调试命名,当你输入相关命令敲回车

执行后,调试信息窗口显示的调试命令前会加上$。下面是相关的调试命令,根据调试状态有

两个命令集:runnig,paused。注意:[]是可选项,<>是必选项。

Commands while page is running (no breakpoints hit)

break [condition]
Set a break point where the location is <function> or <script:function> or <script:line> or <script:line:pos>
break_info [breakpoint #]
List the current breakpoints [or the details of the breakpoint that is specified]
clear <breakpoint #>
Remove a specified breakpoint
help [command]
Display the help information for the current status [or the specified command]
print <expression>
Output the expression specified which can be string, object, function, variable, etc.
scripts
List all of the scripts attached to the page.

Commands while page is paused in debugging mode (Break point is hit)

args
Summerize the arguments to the current function. Does not display anything if there are no arguments.
break [condition]
See Running Description
break_info [breakpoint #]
See Running Description
backtrace [<from frame #> <to frame #>]
Look at all the current frames [or look at the frames specified in the range.]* Looks like you need to specify both. Changed notation here compared to the help in the debugger *
clear
See Running Description
continue
Continues the execution of the script.
frame [frame #]
Shows the current frame [or shows the specified frame]
help
See Running Description
locals
Summarize the local variables for current frame. Displays the variables and their values.
next
Moves to the next line in the code. Seems to be like step.
print
See Running Description
scripts
See Running Description
source [from line] | [<from line> <num lines>]
Show the current functions source code [or see a specified line or range of lines]
step
Step through the code line by line when paused in debug mode. * Not sure what is different between step and next *
stepout
* Seems to not work! Should step out of the current debugging step. It should work like continue! *

基础实例:
    实例将向你展示如何通过一些基本步骤添加两个断点,查看参数、变量运行时的情况,很简单的。

实例代码:
    下面是一个简单的HTML页面以及外部引用的js文件,有两个函数和两个按钮,两个函数分别是两个按钮点击时的处理函数。

HTML页面:

 <html>
<head>
<title>TEST</title>
<script type="text/javascript">
function hello1(){
var d = new Date();
var str = "Hello World - One./n/nIt is ";
alert( str + d.toString() );
}
</script>
<script type="text/javascript" src="hello2.js"></script>
</head>
<body>
<input type="button" onclick="hello1()" value="Hello 1" />
<input type="button" onclick="hello2('hey hey')" value="Hello 2" />
</body>
</html>

hello2.js:

function hello2( foo ){
var d = new Date();
var str = foo + "/n/nHello World - Two./n/nIt is ";
alert( str + d.toString() );
//keleyi.com
}

一步步来:
1、保存上面的代码和页面然后在chrome中打开该页面。你可以通过两种方式打开调试窗口,一种是Page Icon --> 开发人员 --> 调试 JavaScript;另一种是通过快捷键Ctrl + Shift + L打开。 调试窗口打开后,你将看见一个很大的带滚动条的信息显示窗和可以输入调试命令的文本框。

2、如果你输入help后回车,将在信息显示窗口中看见你可以输入的调试命令的相关信息。我们从scripts命令该开始。在命令输入框中输入scripts后回车,在信息窗口中你将看见当前页面所引用的js文件,注意,如果你的chrome中有JavaScript console,将会有许多js文件被引入。

3、我们不能像在VS里面那样随意的设置断点,但是我们可以通过另一种方式来设置。在实例代码中有hello1()和hello2()两个函数,要验证函数的存在可以使用print命令。在命名输入框中输入print hello1你将在信息窗口中看见函数对应的代码,当我们确实函数确实存在,我们就可以通过break hello1设置该函数的断点,当函数被调用时会在函数入口处停止下来。hello2的设置方式一样。

4、为了验证断点是否已经设置,我们可以使用break_info命令来查看断点信息。如果仅仅是想了解第几个断点是什么,可以使用断点序列来查看,命令如下:break_info 1,该命令查看第二个断点是什么。

5、当我们设置好断点后,你可以通过点击页面上的按钮来触发断点,如果你单击第一个按钮,hello1函数被调用的时候会停止下来,你可以通过args命令查看当前函数参数的情况,但是hello1没有参数,所以你看不见任何东西,你可以试试点击第二个按钮来获取参数来看看args的效果。此时你可以使用next命令使程序继续往下执行;如果你想查看当前变量的实际情况,可以再命令输入框中输入locals,信息窗口中就会显示当前变量的信息。next使程序执行下一行代码,如果想程序直接继续往下执行直到该停止时停止,输入continue即可。

6、同样在调试过程中,你可以通过print命令输出变量的情况,用step代替next,用stepall代替continue命令执行相关的调试,自己动手试试看看效果有什么不同吧。

7、最后我们希望移除断点,采用什么方法呢?在命令框中输入clear 1,然后再点击第二个按钮试试有什么效果,哇,程序直接执行了并没有在hello2函数出停止下来,hello2的断点消失了。

上面的内容希望对你入门chrome的调试有所帮助,有的地方没有按照E文里面的方式翻译,如果有什么不对的地方,请指正,我们的目标,“共同进步才是真的进步”。

原文地址:http://www.pascarello.com/lessons/browsers/ChromeDebugHelp.html

利用chrome调试JavaScript代码的更多相关文章

  1. 如何利用好chrome控制台这个神器好好调试javascript代码

    上面的文章已经大致介绍了一下console对象具体有哪些方面以及基本的应用,下面简单介绍一下如何利用好chrome控制台这个神器好好调试javascript代码(这个才是我们真正能用到实处的地方) 1 ...

  2. chrome调试 JavaScript 脚本

    随着 JavaScript 应用的复杂性逐渐提高,开发者需要有力的调试工具来帮助他们快速发现问题的原因,并且能高效地修复它.Chrome DevTools 提供了一系列实用的工具使得调试 JavaSc ...

  3. VS Code - Debugger for Chrome调试JavaScript的两种方式

    VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...

  4. chrome调试JavaScript脚本

    随着 JavaScript 应用的复杂性逐渐提高,开发者需要有力的调试工具来帮助他们快速发现问题的原因,并且能高效地修复它.Chrome DevTools 提供了一系列实用的工具使得调试 JavaSc ...

  5. 如何调试Javascript代码

    转自原文如何调试Javascript代码 目前,常用的浏览器IE.Chrome.Firefox都有相应的脚本调试功能.作为我们.NET 阵营,学会如何在IE中调试JS就足够了,在掌握了IE中的调试方法 ...

  6. 20145311利用gdb调试汇编代码

    利用GDB调试汇编代码 首先编写c语言原代码,我使用的是同学分析过的代码 #include<stdio.h>short addend1 = 1;static int addend2 = 2 ...

  7. VS2010Web默认的浏览器设置和VS里调试JavaScript代码的设置

    前言 重装系统后,VS调用的Web浏览器不是IE了,VS调式不了JavaScript代码了.这两天一直在试终于搞定了.这里查找的问题当然主要是VS里面调式JavaScript代码了. 第一种方式设置V ...

  8. sublime text 内调试Javascript代码

    转自:sublime内调试Javascript代码 之前用webstorm, 可以直接调试js, 在浏览器中也可以调试js,最近换了sublime text, 在想它是否支持调试js代码,于是找到了这 ...

  9. Google Chrome调试js代码,开发者工具之调试工具常用功能

    参考:Google Chrome调试js代码-http://www.open-open.com/lib/view/open1384785324165.html 重点:左下角一个{}括号图标按钮用于把杂 ...

随机推荐

  1. 走进AngularJs(八) ng的路由机制

    在谈路由机制前有必要先提一下现在比较流行的单页面应用,就是所谓的single page APP.为了实现无刷新的视图切换,我们通常会用ajax请求从后台取数据,然后套上HTML模板渲染在页面上,然而a ...

  2. vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化)

    环境准备 软件:vmware workstation 9.0    ubuntu-12.04.2-server-amd64(官方下载) 硬件:确认CPU支持虚拟化VM-T vmware设置 vmwar ...

  3. 这里有个坑---js日期格式yyyy-MM-dd与yyyy/MM/dd

    这里有个坑,---------每一个遇到的坑总结后都是一比财富. 我们写脚本的时候,一般定义一个日期格式会使用“2015-12-21”和“2015/12/21”两种数据格式,由于各取所需日期格式并没有 ...

  4. scikit-learn的梯度提升算法(Gradient Boosting)使用

    前言:本文的目的是记录sklearn包中GBRT的使用,主要是官网各参数的意义:对于理论部分和实际的使用希望在只是给出出处,希望之后有时间能补充完整 摘要: 1.示例 2.模型主要参数 3.模型主要属 ...

  5. 大叔也说Xamarin~Android篇~调用远程API接口,发POST请求

    回到目录 Xamarin我们在上节已经教大家如何去部署它的环境了,今天来说一个实际的例子,使用android客户调用.net web api的一个接口,并发送POST请求,当服务端回到请求后做出响应, ...

  6. EF架构~关于多对多关系表无法更新与插入的问题

    回到目录 在EF里,我们设计模型时,会设计到多对多关系,在EF里会把这种关系会转成两个一对多的关系表,这是比较友好的,因为多对多来说,对于业务本身没什么意思,所以隐藏了,没什么坏处,但对于这个隐藏来说 ...

  7. javascript_core_09之继承、属性、对象

    1.OOP之修改继承: ①child._proto_=father:=>Object.setPrototypeOf(child,father):每次只能修改一个对象的父对象: ②构造函数.pro ...

  8. AngularJS $http配置为form data 提交

    AngularJS $http配置为form data 提交 $scope.formData = {}; $http({ method: 'POST', url: '/user/', // pass ...

  9. Sqlserver 中exists 和 in

    如图,现在有两个数据集,左边表示#tempTable1,右边表示#tempTable2.现在有以下问题: 1.求两个集的交集? 2.求tempTable1中不属于集#tempTable2的集? 先创建 ...

  10. 让 “微软雅黑” 在IE6下完美显示

    微软雅黑可以说是网页中最常见的字体了,但是往往在IE8+的浏览器上调试得很好,到了IE6则会变成默认的"宋体". 因为宋体字体宽度通常比雅黑的要宽,有时候会把页面都布局挤乱. 为了 ...