我有一个非常cpu密集的应用程序。 我想知道是否有可能获得当前的堆栈跟踪,以便通过SIGINT终止来理解,例如,当前计算中的特定函数。
我尝试添加以下处理程序:
process.on('SIGINT', function() {
log('SIGINT!')
var stack = new Error().stack;
log( stack );
log('quitting.');
process.exit();
});
但似乎仅在密集计算结束时才调用它,而不是在我按 Ctrl-C 时立即调用。
关于如何在不使用日志消息污染代码的情况下遵循执行的任何想法?
答案 0 :(得分:0)
我没有针对您的问题的具体答案,但我会寻找同步代码(如fs。* Sync)
我建议使用节点检查器(https://github.com/node-inspector/node-inspector),它可以逐步了解代码中的情况以及有关资源使用情况的报告
答案 1 :(得分:0)
--trace-sigint
选项最初是在 nodejs/node#290207
中引入的。它经过审核,随后于 2020 年 5 月作为 v12.17.0 版本的一部分合并到 Node 的主要发布渠道中。
当这个选项传递给 node
运行时,任何 SIGINT
(CTRL-C 在大多数环境中)不仅会结束执行的脚本,但也打印堆栈跟踪。