2012-03-05 23 views
0

我在Node.js中有一個導出的函數,出於某種原因,它會在一段時間後(如5分鐘後)再次用相同的數據調用。例如,當我用3個不同的變量調用它3次時,它將在一段時間後以相同的順序再次被調用,具有相同的變量並且在調用之間具有相同的延遲。現在我試圖調試這個,並嘗試找到再次調用該函數的地方。我沒有任何循環,超時,也沒有保存傳遞給函數的變量。如何找到從node.js調用函數的位置?

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

PS。對不起,但沒有代碼示例,因爲答案應該是一般的,並且可以以各種方式使用。謝謝!

+0

可能的重複[你如何找到JavaScript中的調用者函數?](http://stackoverflow.com/questions/280389/how-do-you-find-out-the-caller-function-in- javascript) – 2012-03-05 20:35:49

+0

console.log(new Error()。stack);在第四次函數運行會給你一個堆棧跟蹤。 – 2012-03-05 22:26:17

回答

0

也許你的問題是,這個調用位於閉包中。沒有代碼就很難說。您可以使用node-inspectorv8-profiler來調試您的應用程序。

安裝全球節點檢查通過NPM(需要root權限):

npm install -g node-inspector 

安裝V8-探查到你的應用程序node_modules通過NPM:

npm install v8-profiler 

包括V8廓n爲了你的應用程序和開始分析:

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

// Critical code 

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

在調試模式下運行您的應用程序:

node --debug your/node/program.js 

開始節點檢查:在您最喜愛的WebKit基於瀏覽器

node-inspector --web-port=8081 & 

打開

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

node-inspector & 

可以更改默認的8080端口--web端口選項。

轉到「配置文件」選項卡並啓用分析。在這之後,您的應用程序中的每個profiler.startProfiling調用都會創建新的執行跟蹤,您應該在'cpu profiles'中看到它。