簡體   English   中英

如何找到在node.js上調用函數的位置?

[英]How to find where the function is being called from on node.js?

我在Node.js中有一個導出的函數,由於某種原因,經過一段時間(例如5分鍾后),它會使用相同的數據再次調用。 例如,當我使用3個不同的變量調用3次時,將在一段時間后以相同的順序,相同的變量和兩次調用之間的相同延遲再次調用它。 現在,我正在嘗試調試它,並嘗試查找再次調用該函數的位置。 我沒有任何循環,超時,也沒有保存正在傳遞給函數的變量。

可以使用哪些工具或函數來確定該函數的調用者?

PS。 抱歉,但沒有代碼示例,因為答案應該是通用的,並且可以以多種方式使用。 謝謝!

也許您的問題在於調用位於閉包中。 沒有代碼很難說清楚。 您可以使用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配置文件”中看到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM