3

当我使用 --debug-brk 运行 mocha 并使用 node-inspector 打开 chrome 开发工具时,调试器会跳过我放入我的规范文件中的任何调试器语句。

只要我遵循在 mocha 库底部放置断点的技巧,我就可以让调试器语句在模块文件中工作。

有没有其他人看到这个问题?

4

2 回答 2

2

似乎每个人都应该看到与节点检查器版本 0.2.0beta4 相同的问题。

问题在于如何管理断点:

  • 前端会记住浏览器本地存储中的断点,并在加载相关文件后恢复它们。
  • 当您启动 mocha--debug-brk并在第一行停止时,您的规范文件尚未加载,因此前端不会恢复您的断点。
  • 当您恢复 mocha 执行时,前端无法在解析和运行规范文件之间的短窗口中足够快地恢复断点。事实上,mocha 可能会在 V8 调试器发生更改以通知前端有关正在解析的新脚本之前退出!

此问题的另一个解决方法是debugger;在要触发断点的规范文件中添加语句。

编辑

请注意,如果您在it回调中设置断点(即规范实现),则在 github 上的节点检查器问题中提到的解决方案将起作用,但它不会帮助您在构建规范描述的代码中设置断点(即顶级代码在您的规范文件和所有describe回调中)。

例子:

var expect = require('chai').expect;
var calculator = require('./StringCalculator');

// CANNOT break on the line below
describe('add', function() {
  // CANNOT break on the line below
  it('returns 0 for empty string', function() {
    // CAN break on the line below
    expect(calculator.add('')).to.equal(0);
  });
});

编辑2

这个问题在我的节点检查器分支中得到了解决:https ://github.com/strongloop/node-inspector 。在浏览器中加载节点检查器 UI 后,您可以立即在规范文件中的任何位置设置断点。

于 2013-06-26T19:08:35.243 回答
0

在此处查看我对相关问题的回答:https ://stackoverflow.com/a/29351654/3304034以获得足够体面的工作

于 2015-03-30T21:16:25.110 回答