在 Node.js 的调试会话中忽略调试器语句

8
我有一个代码库,在其中有相当多的
debugger;

语句。有时我在调试时,实际上只想跳过所有的debugger;语句,并仅继续到我为调试会话选择的手动设置断点,Node.js是否有一些设置可以做到这一点?

换句话说,我想将debugger;语句视为长期占位符,但对于某些调试会话,我想忽略那些长期占位符。

3个回答

6
那可以使用 Chrome 开发者工具来完成。
您可以执行以下操作:
node --inspect --debug-brk index.js

这将生成类似于这样的东西:

chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=localhost:9229/9c2e4f37-4c3a-4477-b8da-2399c5d9819e

只需在Chrome上复制并粘贴即可。

有一个选项可以禁用/启用所有断点,Chrome将记住您先前设置的所有断点。

请查看:--inspect 以获取更多信息。


Chrome 不允许您仅禁用“debugger”语句?只能一起禁用断点,无论其来源如何。 - Casper Beyer

3

你是否也有 GitHub 页面的链接?npmjs 上的链接已经失效了。 - Marcs

3

一种快速而不准确的方法(只用于调试,所以没问题),是将以下脚本粘贴到scripts/debugger.js中:

require.extensions['.js'] = function(module, filename) {
  var content = fs.readFileSync(filename, 'utf8').replace(/debugger/g, [
    '(function() {',
    '  if (__debugger) {',
    '    debugger;',
    '  }',
    '})',
  ].join('\n'));

  module._compile(content, filename);
};

然后使用node -r ./scripts/debugger启动节点。

这里使用全局变量,以便可以在调试器repl或chrome的repl中启用/禁用它,如果使用--inspect进行调试。

技术上讲,require.extensions已经过时了,但它不会被移除,并且在这里它的作用正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接