你如何调试node.js应用程序?

时间:2012-03-19 21:18:07

标签: 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) {

2 个答案:

答案 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/)暂停执行并检查堆栈跟踪以查找锁定。