在调试模式下,使用node-inspector时,mocha不会在spec文件中的调试器语句上停止

时间:2013-06-06 16:35:35

标签: node.js debugging mocha node-inspector

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

可以获取调试器语句在模块文件中工作,前提是我按照this trick在mocha lib底部放置一个断点。

还有其他人看到过这个问题吗?

2 个答案:

答案 0 :(得分:2)

似乎每个人都应该看到node-inspector版本0.2.0beta4的相同问题。

问题在于如何管理断点:

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

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

修改

请注意,如果在it回调中设置断点(即规范实现),github上node-inspector问题中提到的解决方案将有效,但它无法帮助您在构建的代码中设置断点规范描述(即specfile中的顶级代码和所有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);
  });
});

<强> EDIT2

问题在我的node-inspector的分支中得到修复:https://github.com/strongloop/node-inspector。在浏览器中加载node-inspector UI后,您可以立即在specfiles中的任何位置设置断点。

答案 1 :(得分:0)

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