在 node.js 中获取*当前*堆栈跟踪(例如,通过 SIGINT)

fst*_*tab 5 javascript debugging signals stack-trace node.js

我有一个非常占用CPU资源的应用程序。我想知道是否可以获取当前的堆栈跟踪,以便通过 SIGINT 终止来了解当前计算中的特定函数。

我尝试添加以下处理程序:

process.on('SIGINT', function() {
    log('SIGINT!')
    var stack = new Error().stack;
    log( stack );
    log('quitting.');
    process.exit();
});
Run Code Online (Sandbox Code Playgroud)

但似乎只有在密集计算结束时才会调用它,而不是在我按Ctrl-C时立即调用。

知道如何跟踪执行而不用日志消息污染代码吗?

lca*_*pra 0

我没有针对您的问题的具体答案,但我会寻找同步代码(如 fs.*Sync)

我建议使用node-inspector(https://github.com/node-inspector/node-inspector),它可以通过代码中的一步一步以及一些有关资源使用情况的报告来了解正在发生的情况