我已经使用Chromium JavaScript远程调试器设置了Eclipse kepler(v4.3.2),以便能够远程调试node.js进程(连接到V8Debugger) . 然后我开始量角器了
node --debug-brk protractor.js conf.js
其中protractor.js是node_module量程器目录的bin文件夹中的shellscript文件,缺少启动节点的第一行 . 因此,节点在调试模式下启动,侦听端口5858以进行调试器连接 . 在Eclipse中,我已经配置了一个独立的V8 VM调试器配置,用于连接本地端口5858.连接到node.js服务器后,它会访问protractor.js文件中的第一个断点 . 但是当恢复/继续执行时,它会在控制台内重复“调试器侦听端口5858”并且不再继续测试 .
有人能告诉我这有什么问题吗?
此致,塞巴斯蒂安
1 回答
好的,这里是答案:How to debug Node.JS child forked process?
简而言之:这是node.js v0.10中的一个错误,它无法调试子进程 .
但是仍然可以调试子进程:
这里的修正是我的解决方案:更改launcher.js中的代码以使用
--debug-brk
分叉子进程!并给它一个独特的端口,如上面发布的链接中所述 . 然后,您需要在childFork.process.send('run',...)
函数之前设置断点(或在代码中放置debugger;
),以阻止代码将消息发送到分叉进程 . 这是必需的,因为您已通过设置--debug-brk
来停止运行子进程 . 所以连接到第二个进程并点击继续 . 您将看到childprocess(runFromLauncher)将一直等到收到消息'run' . 然后切换回第一个调试器,点击运行并让它将消息发送到子进程 . 您将看到,如果在runFromLauncher.js中的process.on.message(...)
函数内设置断点,则可以再次单步执行代码 .