在NodeJSdebugging器中添加条件断点

node.js help命令输出以下内容:

 debug> help Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb), watch, unwatch, watchers, repl, restart, kill, list, scripts, breakOnException, breakpoints, version 

我可以使用setBreakpoint添加一个新的断点:

 debug> setBreakpoint(12) ... 

但是,我可以使它有条件吗? 例如:

 *only if `foo() === true`, stop here* 

另一种方法是像在脚本中一样添加它:

 if (foo()) { debugger; } 

这是可能的通过NodeJSdebugging器?

我相信这可以通过使用watchers来实现。 我不太熟悉它的用例或语法,所以我没有任何例子。

文档似乎用variables名称描述了这种用法。 这也可能取决于我们正在讨论的node.js的版本。

https://nodejs.org/api/debugger.html#debugger_info

使用Object.defineProperty 。 例如:

 function setter () { debugger; } Object.defineProperty(Math, 'name', { set: setter }); 

如果在Math对象上设置了name属性,将会添加一个debugging器语句。

参考

  • MDN:Object.defineProperty

  • 不同的列表:使用JavaScript进行高级debugging

  • JavaScript Getters和Setters

Interesting Posts