用节点检查器debugging远程mocha.jstesting?
我有一个远程计算机上的testing文件,我想通过node-inspector
走过它。 所以,在远程机器上( Vagrantfile ):
node-inspector & mocha --debug-brk foo.test.js
然后,在我的开发机器上,我打开金丝雀,然后去:
http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858
但是,我无法debugging我的testing,因为debugging器将在node_modules/mocha/bin/_mocha
的第一行node_modules/mocha/bin/_mocha
,而我的testing文件在Sources
选项卡中不可见 :
我试着在398行的 _mocha里设置一个断点:
runner = mocha.run(program.exit ? exit : exitLater);
但是,当我尝试“进入”,看到run
function执行,它不介入。我可以看到控制台中的输出,所以它虽然执行。 如果我直接在run
函数中设置断点,它不会在那里破坏。
此外, testing文件从不出现在“Sources”选项卡中,因此我无法在其中设置断点。 我也尝试添加一个debugger
语句,但它仍然没有在那里打破。
我怎样才能让节点检查员显示testing文件,并通过它?
node v0.12.0 node-inspector v0.10.0 mocha v2.2.4
我经常碰到这个,我不知道是否有更好的解决scheme(如果有我会很高兴听到它),但是我发现我必须让debugging器前进到它意识到我想debugging的其他文件。 在没有看到更多代码的情况下,我无法给出更具体的关于何处前进的build议,但试图找出testing文件将在哪些源文件中加载并前进到那里。 随着代码的运行,它会逐渐将更多文件添加到“来源”面板。
其实有两个问题:
- 断点不尊重
- testing文件不可见
第一个问题是在最近发布的node-inspector@v0.10.1
。 所以,断点在任何地方都会受到尊重。
还有第二个问题。 正如@JMM所说,“Sources”选项卡中的文件列表是dynamic的,当进程中断时,testing文件不会出现在那里。 我最终做的是在testing函数运行之前设置一个断点,在mocha/lib/runnable.js#266
,在这一行:
var result = fn.call(ctx);
fn
是testingfunction。 一旦进入它,testing文件将出现在Sources
选项卡中,并且debugging器的光标将位于testingfunction的第一行。