我使用节点检查了很多.当我编辑我的代码并重新启动时,我得到了不可避免的
与目标分离
新进程启动时出错.我总是要找到选项卡节点检查器已打开并重新启动它.
我想知道我是否可以避免这种情况.例如,从节点向节点检查器发送消息,告诉运行node-inspector的浏览器选项卡重新启动.
我有一个建立在restify上的应用程序.我没有内存泄漏,但是我在清除gc期间有大量的内存增长,然后是重量级标记扫描gc并清理内存.
它会影响我的应用程序的性能.
[2268] 266859 ms: Scavenge 61.5 (119.5) -> 46.0 (119.5) MB, 2.2 ms [allocation failure].
[2268] 267084 ms: Scavenge 63.7 (119.5) -> 48.3 (119.5) MB, 6.2 ms [allocation failure].
[2268] 267289 ms: Scavenge 66.0 (119.5) -> 50.6 (119.5) MB, 2.6 ms [allocation failure].
[2268] 267504 ms: Scavenge 68.3 (119.5) -> 52.8 (119.5) MB, 2.4 ms [allocation failure].
[2268] 267700 ms: Scavenge 70.5 (119.5) -> 55.1 (119.5) MB, 2.7 ms [allocation failure].
....
[2268] 275913 ms: Scavenge 154.2 (183.5) -> …Run Code Online (Sandbox Code Playgroud) 我开始使用Node Inspector来调试我的一些Node应用程序.但是,有一件事我不知道该怎么做,一旦Node-inspector连接到一个Node应用程序,如何分离并将其附加到同一个盒子上运行的另一个Node应用程序?
我可以同时附加到多个进程吗?
我有以下代码从终端捕获^ C并正常关闭我的Express应用程序:
process.on('SIGINT', () => {
console.log('SIGINT received ...');
console.log('Shutting down the server');
server.close(() => {
console.log('Server has been shutdown');
console.log('Exiting process ...');
process.exit(0);
});
});
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用启动节点实例--inspect,则上述代码无法停止检查器和Chrome调试器.当我重新启动我的应用程序时,我收到以下错误:
Starting inspector on 127.0.0.1:9229 failed: address already in use
Run Code Online (Sandbox Code Playgroud)
如何优雅地停止我的应用程序以避免此错误?
可以使用完整的代码在这里.
我可以:
但是如何使用节点检查器调试nodeunit测试?
我试过了,但没有工作:
nodeunit --debug myNodeUnitModule_test.js 它不起作用.nodebug /usr/local/bin/nodeunit myNodeunit_test.js但是它既不在ubuntu(No such file or directory)也不在mac(env: node\r: No such file or directory)上工作几乎工作 节点--debug/usr/local/bin/nodeunit ./routes/edit/bodyTelInfoArraysToObject_test.js
其中/usr/local/bin/nodeunit是命令采用的路径which nodeunit
获得输出:
debugger listening on port 5858
并在那里执行测试.
但我不能跳进debuggin:当我localhost:8080在chrome中打开url 来观看调试时:
在我的nodeunit测试中,我写debugger了停止调试那里.但没什么.
这感觉真的很傻,但我不能让节点检查员/ node-debug工作.
说明说要做npm install然后运行node-debug web.js.所以我做到了.现在我打开了一个可爱的浏览器窗口,向我展示了带断点的代码......并且不知道用哪个url来实际访问代码.
检查员在http://localhost:8080/debug?port=5858,终端说:
> node-debug web.js
debugger listening on port 5858
Node Inspector is now available from http://localhost:8080/debug?port=5858
Debugging `web.js`
Run Code Online (Sandbox Code Playgroud)
...
我已尝试点击localhost:5000(这是我的express.js端口),但如果我没有node web.js运行单独的实例,则要么失败,要么如果我有另一个正在运行但是不检查检查器中的任何断点,则成功.
当我去的时候http://localhost:5858/,我得到:
远程调试会话已经激活
当我去的时候http://localhost:8080/,我得到:
不能获取 /
(/路径完全适用于我的服务器.)
我正在尝试使用Express 4应用程序运行node-inspector - 我在Vagrant框中运行它但是能够在浏览器中查看页面而没有任何问题(我在主机上可以使用vagrant机器上的端口).
我使用npm start或node --debug bin/www启动应用程序,然后启动节点调试器bin/www.我在浏览器中加载了检查器,它命中了第一行的初始断点,但是在页面上执行任何操作以调试会触发断点导致EADDRINUSE(也就是端口正在使用)错误.关于可能导致这种情况的原因,我有点困惑,但是,我很可能使用可以在Express 3而不是4上运行的命令.另外,也许有一些配置我缺少在运行调试器上主机的浏览器,但在流浪盒上运行检查员?
我花了一些时间在NodeJS测试套件中调试一个奇怪的无限循环问题.它只在罕见的条件下发生,但我可以在附加到chrome调试器时重现它.
我认为它与V8处理异常中的堆栈跟踪以及vows库对AssertionError对象所做的扩展(vows添加了一个toString方法)有关.我也错了,所以我想问一下我对V8实现的理解是否正确.
这是重现错误的最小示例:
$ git clone https://github.com/flatiron/vows.git
$ cd vows && npm install && npm install should
$ cat > example.js
var should = require('should');
var error = require('./lib/assert/error.js');
try {
'x'.should.be.json;
} catch (e) {
console.log(e.toString());
}
// without debug, it should fail as expected
$ node example.js
expected 'x' to have property 'headers' // should.js:61
// now with debug
$ node-inspector &
$ node --debug-brk example.js
// 1) …Run Code Online (Sandbox Code Playgroud) 我在使用命令启动node-inspector时遇到错误(PFB) node-inspector &
Node Inspector v0.6.2
info - socket.io started
warn - error raised: Error: listen EACCES
Cannot start the server at 0.0.0.0:8080. Error: listen EACCES.
Run Code Online (Sandbox Code Playgroud) 在 Chrome 中,您可以转到chrome://inspect进入调试页面。火狐浏览器有这样的东西吗?
