如何在执行某条线后仅在断点处停止?

时间:2016-06-28 14:13:41

标签: javascript debugging google-chrome-devtools javascript-debugger

通常,我想在调试时暂停一个特定的行,但只能在执行另一行之后暂停。通常,这个JavaScript代码是机器生成的(例如,通过JSP或PHP),或者应该构建(例如通过Grunt),每次我想添加断点时都会有点烦人。在这种情况下如何在特定的行停止?

例如,我有两个函数,f_a()f_b()以这种方式调用:

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

f_b();
f_a();

Running example

我想在f_a()内添加一个断点,但只在调用f_b()后才停止此函数。怎么做?

2 个答案:

答案 0 :(得分:2)

我们可以做到以下几点:

  1. f_b()添加断点。
  2. 使此断点有条件。作为条件,将变量(我们说,pause_at_f_a)设置为true。我们不想在f_b()内暂停,因此我们使用逗号运算符返回false。那么条件是

    pause_at_f_a = true, false
    

    Adding conditional breakpoint to like that should enable other breakpoint.

  3. f_a()添加断点。此断点的条件应为paused_at_f_a变量。

    Check for set variable on the breakpoint that should pause.

  4. 可能的烦恼是,在检查了我们要检查的内容后,断点将保持启用状态。这就是为什么我又采取了另一个步骤:

    1. 除了检查变量是否为true之外,如果它是真的,请将其取消设置,请使用以下条件:

      pause_at_f_a ? (pause_at_f_a = false, true) : false
      
    2. 条件可以是任何东西。也可以使用计数器。该技巧的核心是使用断点来设置变量。结果如下:

      A debugging session with the trick.

答案 1 :(得分:1)

您也可以在代码中编写debugger;,浏览器开发工具将停在该代码行上。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger