我在Node.js中有一个导出的函数,由于某种原因,它会在一段时间后再次调用相同的数据(比如5分钟后)。例如,当我用3个不同的变量调用它3次时,它将在一段时间后以相同的顺序再次调用,具有相同的变量并且在调用之间具有相同的延迟。现在我正在尝试调试它并尝试再次找到调用该函数的位置。我没有任何循环,超时,也没有保存传递给函数的变量。
可以使用哪些工具或函数来确定该函数的调用者?
PS。对不起,但没有代码示例,因为答案应该是通用的,并且可以以各种方式使用。谢谢!
答案 0 :(得分:0)
也许你的问题在于调用位于闭包中。没有代码就很难准确说出来。您可以使用node-inspector和v8-profiler来调试您的应用。
通过npm:
全局安装node-inspector(需要root权限)npm install -g node-inspector
通过npm:
将v8-profiler安装到app node_modulesnpm 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'中找到它。