javascript - 如何在执行某行后仅在断点处停止?

标签 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() 调用后停在该函数处。如何做到这一点?

最佳答案

我们可以做到以下几点:

  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.

一个可能的烦恼是,在我们检查了我们想要检查的任何内容之后,断点将保持启用状态。这就是我使用另一个步骤的原因:

  1. 与其仅仅检查变量是否为 true,如果为真则取消设置,使用以下条件:

    pause_at_f_a ? (pause_at_f_a = false, true) : false
    

条件可以是任何东西。也可以使用计数器。技巧的核心是使用断点来设置变量。这是结果:

A debugging session with the trick.

关于javascript - 如何在执行某行后仅在断点处停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078643/

相关文章:

使用每个语句结果进行 JavaScript 分析

javascript - 如何在动态添加的 JavaScript 文件开头暂停执行?

javascript - 如何退出调试并阻止执行下一个代码?

javascript - 用 PHP 时间算出 JavaScript 时间

java - 调试测试,需要建议

c++ - 在外部测试环境时程序崩溃 - C++

java - 无需源码远程调试

javascript - js中的 session 存储

javascript - 如何在 Mongoose 中动态删除所需的验证

javascript - 我想知道这个函数到底做了什么 .split (' ' ).map(x => +x);