看见网上很多人问怎么用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. 如何为编程爱好者设计一款好玩的智能硬件(十)——无线2.4G通信模块研究·一篇说完

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

  2. iOS ARC模式 内存管理

     1,测试一 ;i<;i++) { NSLog(@"i = %d",i); } 2,测试二 ;i<;i++) { NSLog(@"i = %d",i ...

  3. linux 学习 常用命令

     以下命令是本人的CentOS6.5系统 一.linux个目录的作用 #linux个目录的作用 /bin 所有用户都可使用的命令 /sbin 超级用户(root)可以使用的命令 /boot 系统目录建 ...

  4. Maven Myeclipse 搭建项目

    一.maven概述 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具! 简单说Maven 是一个项目管理和构建自动化工具 二.环境搭建 1. ...

  5. WPF入门教程系列五——Window 介绍

    一.窗体类基本概念 对于WPF应用程序,在Visual Studio和Expression Blend中,自定义的窗体均继承System.Windows.Window类.用户通过窗口与 Windows ...

  6. javascript闭包学习例子

    javascript中的闭包个很让人头疼的概念.总结一下 闭包是指有权访问一个函数作用域中的变量的函数.创建闭包最常见的方式,是在一个函数内部创建另一个函数,用return返回出去. 使用闭包可能造成 ...

  7. Tomcat源码解读系列(一)——server.xml文件的配置

    Tomcat是J2EE开发人员最常用到的开发工具,在Java Web应用的调试开发和实际部署中,我们都可以看到Tomcat的影子.大多数时候,我们可以将Tomcat当做一个黑盒来看待,只需要将编写的J ...

  8. DOM_01之树及遍历

    1.DOM:ECMAScript+DOM+BOM,Document Object Model,核心DOM+HTML DOM+XML DOM: 2.辨析:①HTML:专门编写网页内容的语言:②XHTML ...

  9. python导入模块和包的使用

    做项目的时候经常会要求做到模块化管理,即同样功能的代码放到同一个文件夹下,以便于方便管理,相信很多人对模块的引用都模糊不清,今天鄙人在这里就总结下. 一.模块导入的使用 在同一个文件夹下有两个文件分别 ...

  10. Unity 产生各不相同的随机数

    1. 网上很多方法都说用时间种子来解决,但是在极短的时间内,这种方法没效 Random r = new Random(DateTime.Now.Millisecond); Random Counter ...