2013-03-21 31 views
8

我有一個節點應用程序,我想使用節點分析器進行配置文件。使用v8分析nodejs

所以首先我跑:

node --prof v8test.js 

然後,我下載了V8工具

svn checkout http://v8.googlecode.com/svn/trunk/ v8; 
make dependencies; 
make native; 

然後試圖分析(v8.log)創建的文件

tools/linux-tick-processor ../v8.log 

但我收到很多:

Code move event for unknown code: 0x289dd8475560 
Code move event for unknown code: 0x289dd84758e0 
Code move event for unknown code: 0x289dd8479280 
Code move event for unknown code: 0x289dd8482980 
Code move event for unknown code: 0x289dd84c2a80 
line 718730: unknown code state: undefined 
line 718731: unknown code state: undefined 
line 739575: unknown code state: undefined 
line 739577: unknown code state: undefined 

有人能幫我弄清楚發生了什麼事嗎?

+1

沒有一個答案,但本Noordhuis幫助我理清了同樣的問題: https://groups.google.com/forum/?fromgroups=#!topic/nodejs/4NMoiPd2K6s – jcollum 2013-04-04 21:45:42

回答

5

日誌文件格式似乎經常變化,因此您需要確保您使用的是正確版本的v8。例如,如果配置文件日誌是使用節點v0.10.18生成的,則必須使用v8版本3.14.5的刻度處理器進行分析。要找出構建給定版本節點的v8版本,可以在節點源代碼分發中檢查deps/v8/ChangeLog(節點自己的更改日誌在這方面似乎有點不可靠)。

0

確保你沒有使用32位版本的分析工具運行64位版本的節點,反之亦然,當我偶然發生這種情況時,我遇到了類似的問題。

+0

如何,夥計,只是怎麼樣? ??????? *嘆息* – MaiaVictor 2013-06-29 01:25:26

+0

@Viclib - 從節點站點下載32或64位版本,然後當您編譯v8工具時,請按照其構建指示爲32位或64位環境構建它們。我發現獲得32位節點+構建32位版本的分析工具是最容易做到的。 – Tim 2013-07-01 01:20:41

0

配置節點應用程序的另一個選項是使用VTune放大器,而不是嵌入到Node.js中的內部V8 profiler。在這種情況下,您將看到如何通過函數的源代碼分發性能指標。 V8配置文件現在無法做到這一點。看看這post看看你是如何做到這一點。