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


100

我有一个简单的js文件,可连续打印日期。

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

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

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

s = date.getSeconds();

是我的资料来源所在的jsfiddle

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

无论如何,我的问题是,是否可以在chrome调试器工具中设置条件断点?


1
+1是因为我不知道有可能,直到去检查文档以回答这个问题。谢谢!
Theraot

Answers:


141

是的,有可能。

右键单击断点的标记,然后选择“编辑断点...”,可以在其中设置条件。

从位于developers.google.com(强调我)的Breakpoints上的Chrome开发者工具中

注意:您设置的所有断点将显示在右侧边栏中的“断点”下。单击条目将跳至源文件中突出显示的行。设置断点后,右键单击蓝色标记断点指示器以设置该断点的条件语句。键入一个表达式,只有条件为真时,断点才会暂停。


谢谢,我照你说的做了,编辑了断点并设置了if(s == 50),但是为什么它没有在这种情况下停止?
Pawan 2013年

2
@PreethiJain只写条件“ s == 50”(不带引号)。顺便说一下,我设法在以下位置进行jsfiddle的工作: jsfiddle.net/nVpXN/6
Theraot

6
您甚至不需要添加断点就可以开始。只需右键单击一行,然后单击“添加条件断点...”
Martin Ender 2013年

2
伙计,那是2017年,我正在学习有关Chrome的新基础知识。#Awesomeness
The Qodesmith'17

1
这将只在代码执行的这一点检查语句,如果是,则将其中断,与if语句中的断点相同。我认为OP希望知道调试器是否在每个语句执行时检查条件是否得到满足以及调试器是否在此行中断。这种行为非常有用,因为您不必扮演侦探来找出变量何时执行了意外操作。
ejectamenta

27

看一下debugger声明。基本上,它会调用所有可用的调试器工具,在Chrome中,它的作用就像解释器遇到断点一样。

您的代码为:

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

参考

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


尽管这实际上更多是出于原始方式的精神,但提出了原始问题,这是非常有用的信息。我认为真正的问题是关于Chrome工具,而不是ECMAscript。话虽如此; 需要注意的是:删除debugger生产代码中的所有调用。(我很确定,如果调试器在附近,则棉絮将引发错误,但是每当涉及到该主题时,都值得一呼唤)。
克里斯彭·史密斯

1
您不需要调试器语句,也可以在if中包含一个空语句,然后在其中添加一个断点。
ejectamenta

8

您可以按照以下步骤在Google Chrome中设置条件断点:

1.右键单击要停止的断点,请单击 在此处输入图片说明

2.单击“添加条件断点”,将显示一个文本,您可以添加条件(如果条件满足,结果为“ true”,否则为“ false”),添加条件后,断点颜色将变为橙色, chk on 在此处输入图片说明

3.重新加载同一页面如果条件满足,您可以看到断点将正常工作 在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.