JavaScript:如何在Chrome调试器工具中设置条件断点

106

我有一个简单的js文件,它不断打印日期。

我正在使用Google Chrome调试工具(F12)

我的问题是,在Google Chrome中是否可以设置条件断点?

在我的代码中,如果秒值等于50,我想设置一个断点。

s = date.getSeconds();

这里是我的源代码所在的jsfiddle链接

(不确定为什么它在jsfiddle中无法工作)

我想问的问题是,是否可以在Chrome调试器工具中设置条件断点?


1
+1 因为在回答这个问题之前我不知道这是可能的,直到去查看文档。谢谢! - Theraot
3个回答

149

是的,这是可能的。

右键点击断点标记并选择“编辑断点…”,在那里你可以设置条件。

来自Chrome开发者工具关于断点在developers.google.com上(重点是我的):

注意:您设置的所有断点都显示在右侧边栏中的断点下。单击条目会跳转到源文件中的突出显示行。一旦您设置了断点,请右键单击蓝色标记断点指示器以为该断点设置条件语句。键入表达式,仅当条件为真时,断点才会暂停。


谢谢,我按照你说的做了,编辑了断点并设置了if(s==50),但为什么它没有在那个条件停止呢? - Pawan
2
@PreethiJain 只需编写条件 "s == 50"(不包括引号)。顺便说一下,我成功地让 jsfiddle 在此网址上工作:http://jsfiddle.net/nVpXN/6/。 - Theraot
7
您甚至不需要先添加断点。只需立即右键单击一行,然后点击“添加条件断点...”。 - Martin Ender
2
哇,已经是2017年了,我正在学习有关Chrome的新基础知识。#太棒了 - The Qodesmith
1
这只是在代码执行过程中检查语句,如果条件成立,则会中断,就像if语句中的断点一样。我认为OP想知道调试器是否在每个语句执行时检查条件是否满足,如果满足,则调试器会在此行中断。这种行为更加有用,因为您不必扮演侦探来找出变量何时执行意外操作。 - ejectamenta
显示剩余2条评论

28

看一下debugger语句。它基本上会调用任何可用的调试工具,在Chrome中,它会像解释器遇到断点一样工作。

你的代码将是:

s = date.getSeconds();
if (s == 50) {
   debugger;
}

来自参考资料:

[debugger] 调用任何可用的调试功能。如果没有可用的调试功能,则此语句无效。


虽然这更符合最初提问的精神,也是很好的信息;但我认为真正的问题是关于Chrome工具,而不是ECMAscript。话虽如此,有一个需要添加的警告:在生产代码中删除所有debugger调用。(我非常确定linting会抛出错误,如果调试器存在,但无论何时提到该主题都值得注意)。 - Crispen Smith
1
你不需要调试器语句,你也可以在if语句内部添加一个空语句,并在那里添加断点。 - ejectamenta

8
您可以在Google Chrome中设置条件断点,按照以下步骤操作:
1.右键单击要停止的断点,请勾选 enter image description here 2.点击“添加条件断点”,会出现一个文本框,您可以在其中添加条件(如果条件满足,则结果为“true”,否则为“false”),添加条件后,断点颜色将变为橙色,请查看 enter image description here 3.重新加载同一页面,如果条件满足,则可以看到断点起作用,如 enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接