如何在node.js上找到调用函数的位置?

时间:2012-03-05 20:28:35

标签: javascript node.js

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

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

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

1 个答案:

答案 0 :(得分:0)

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

通过npm:

全局安装node-inspector(需要root权限)
npm install -g node-inspector

通过npm:

将v8-profiler安装到app 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

以调试模式运行app:

node --debug your/node/program.js

启动node-inspector:

node-inspector &

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

node-inspector --web-port=8081 &

在您最喜欢的基于WebKit的浏览器中打开

http://127.0.0.1:8080/debug?port=5858

转到'个人资料'选项卡并启用分析。在那之后,你的应用程序中的每个profiler.startProfiling调用都会创建新的执行跟踪,你应该在&#c; cpu profiles'中找到它。