如何在执行某行后仅在断点处停止?
How to only stop at a breakpoint after some line was executed?
经常,我想在调试时停在特定的行,但只有在执行了另一行之后。通常,这个 JavaScript 代码是机器生成的(例如,由 JSP 或 PHP),或者应该构建(例如,由 Grunt),这可能有点烦人时间我想添加一个断点。在这种情况下如何在特定行停止?
例如,我有两个函数 f_a()
和 f_b()
是这样调用的:
for (var i = 0; i < 1000; i++) {
f_a();
}
f_b();
f_a();
我想在f_a()
里面加一个断点,但是在调用f_b()
之后才停在这个函数。怎么做?
我们可以做到以下几点:
- 添加断点到
f_b()
。
使这个断点成为条件。作为条件,将一个变量(比方说,pause_at_f_a
)设置为true
。我们不想在 f_b()
里面暂停,所以我们使用逗号运算符 return false
。那么条件就是
pause_at_f_a = true, false
给f_a()
添加一个断点。这个断点的条件应该是paused_at_f_a
变量。
一个可能的烦恼是,在我们检查了我们想要检查的任何内容之后,断点将保持启用状态。这就是我使用另一个步骤的原因:
与其仅仅检查变量是否为 true
,如果为真则取消设置,使用以下条件:
pause_at_f_a ? (pause_at_f_a = false, true) : false
条件可以是任何东西。也可以使用计数器。技巧的核心是使用断点来设置变量。这是结果:
您也可以在您的代码中写入 debugger;
,浏览器开发工具将在该代码行停止。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger
经常,我想在调试时停在特定的行,但只有在执行了另一行之后。通常,这个 JavaScript 代码是机器生成的(例如,由 JSP 或 PHP),或者应该构建(例如,由 Grunt),这可能有点烦人时间我想添加一个断点。在这种情况下如何在特定行停止?
例如,我有两个函数 f_a()
和 f_b()
是这样调用的:
for (var i = 0; i < 1000; i++) {
f_a();
}
f_b();
f_a();
我想在f_a()
里面加一个断点,但是在调用f_b()
之后才停在这个函数。怎么做?
我们可以做到以下几点:
- 添加断点到
f_b()
。 使这个断点成为条件。作为条件,将一个变量(比方说,
pause_at_f_a
)设置为true
。我们不想在f_b()
里面暂停,所以我们使用逗号运算符 returnfalse
。那么条件就是pause_at_f_a = true, false
给
f_a()
添加一个断点。这个断点的条件应该是paused_at_f_a
变量。
一个可能的烦恼是,在我们检查了我们想要检查的任何内容之后,断点将保持启用状态。这就是我使用另一个步骤的原因:
与其仅仅检查变量是否为
true
,如果为真则取消设置,使用以下条件:pause_at_f_a ? (pause_at_f_a = false, true) : false
条件可以是任何东西。也可以使用计数器。技巧的核心是使用断点来设置变量。这是结果:
您也可以在您的代码中写入 debugger;
,浏览器开发工具将在该代码行停止。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger