我正在开发一个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) {
答案 0 :(得分:4)
我正在使用JetBrains WebStorm IDE进行Javascript开发。它具有完整的Node支持,这意味着您可以设置断点并跟踪代码。但是,WebStorm不是免费的。 您还可以查看有关节点调试的较旧主题: How do I debug Node.js applications?
有一个关于使用Chrome Development Tools的公认答案,但我更倾向于使用更为流行的答案来使用node-inspector进行调试。
答案 1 :(得分:0)
您可能希望将节点置于--debug
模式并使用node-inspector进行分析。
当代码在某个地方锁定时,您可以使用暂停按钮(http://pix.am/LYZz/)暂停执行并检查堆栈跟踪以查找锁定。