[英]How to find where the function is being called from on node.js?
我在Node.js中有一個導出的函數,由於某種原因,經過一段時間(例如5分鍾后),它會使用相同的數據再次調用。 例如,當我使用3個不同的變量調用3次時,將在一段時間后以相同的順序,相同的變量和兩次調用之間的相同延遲再次調用它。 現在,我正在嘗試調試它,並嘗試查找再次調用該函數的位置。 我沒有任何循環,超時,也沒有保存正在傳遞給函數的變量。
可以使用哪些工具或函數來確定該函數的調用者?
PS。 抱歉,但沒有代碼示例,因為答案應該是通用的,並且可以以多種方式使用。 謝謝!
也許您的問題在於調用位於閉包中。 沒有代碼很難說清楚。 您可以使用node-inspector和v8-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.