你如何debugging一个node.js应用程序?

我正在研究一个node.js应用程序,偶尔它似乎冻结。 我认为这是因为用户代码线程已冻结。 这似乎发生约5分钟的使用后,但我不知道为什么。 有没有什么工具可以让你知道它在哪里死锁? 除了在每一行添加日志。

更新以添加更多信息….

我已经添加了一些跟踪语句,并缩小到以下代码:

exports.addLocationToRoute = function(req, res) { console.log("27"); console.log(req.body); var queryConfig = { text: "INSERT INTO route_locations (route_id, location_id, order_id) VALUES ($1, $2, $3);", values: [req.params.id, req.body.locationId, req.body.order] }; pg.connect(conString, function(err, client) { console.log("28"); ... 

我看到27个输出,但不是28.有没有办法看到为什么它被冻结在这两个点之间?

更新2:

我只是试图再次复制,并在代码中的不同点冻结,但在这一点上,它也在呼唤

 pg.connect(conString, function(err, client) { 

我正在使用JetBrains WebStorm IDE进行Javascript开发。 它具有完整的Node支持,这意味着您可以设置断点并跟踪您的代码。 但是,WebStorm并不是免费的。 您也可以查看节点debugging的旧主题: 如何debuggingNode.js应用程序?

有一个关于使用Chrome开发工具的公认的答案,但我宁愿遵循更stream行的答案的方式使用节点检查器进行debugging。

您可能希望将节点放入--debug模式并使用节点检查器进行分析。

当代码locking在某个地方时,可以使用暂停button( http://pix.am/LYZz/ )暂停执行,并检查堆栈跟踪以查找locking。