【问题标题】:How to find where the function is being called from on node.js?如何找到从 node.js 上调用函数的位置?
【发布时间】:2012-03-06 07:48:14
【问题描述】:

我在 Node.js 中有一个导出函数,由于某种原因,它在一段时间后(比如 5 分钟后)再次使用相同的数据调用。例如,当我用 3 个不同的变量调用它 3 次时,它会在一段时间后以相同的顺序使用相同的变量和调用之间的相同延迟再次调用。现在我正在尝试调试它并尝试找到再次调用该函数的位置。我没有任何循环、超时,也没有保存传递给函数的变量。

可以使用哪些工具或函数来确定该函数的调用者?

PS。对不起,但没有代码示例,因为答案应该是通用的并且可以以各种方式使用。谢谢!

【问题讨论】:

标签: javascript node.js


【解决方案1】:

也许您的问题在于调用位于闭包中。没有代码很难准确地说出来。您可以使用node-inspectorv8-profiler 来调试您的应用程序。

通过 npm 全局安装 node-inspector(需要 root 权限):

npm install -g node-inspector

通过 npm 将 v8-profiler 安装到您的应用程序 node_modules:

npm install v8-profiler

在您的应用中包含 v8-profiler 并开始分析:

var profiler = require('v8-profiler');
profiler.startProfiling('profile name');

// Critical code

// profiler.stopProfiling('profile name'); // If needed

在调试模式下运行你的应用程序:

node --debug your/node/program.js

启动节点检查器:

node-inspector &

您可以使用 --web-port 选项更改默认 8080 端口:

node-inspector --web-port=8081 &

打开

http://127.0.0.1:8080/debug?port=5858
在您最喜欢的基于 WebKit 的浏览器中。

转到“配置文件”选项卡并启用配置文件。在这些操作之后,您应用中的每个 profiler.startProfiling 调用都会创建新的执行跟踪,您应该在“cpu 配置文件”中看到它。

【讨论】:

    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2013-06-27
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多