解释node.jsconfiguration文件输出?

test.js

function test(){ for(var i=0; i<2000000000; ++i); }; test(); 

用于分析它的命令:

 node --prof test.js nprof 

输出:

 line 249: unknown code state: undefined line 252: unknown code state: undefined line 253: unknown code state: undefined line 256: unknown code state: undefined line 258: unknown code state: undefined line 259: unknown code state: undefined line 260: unknown code state: undefined line 261: unknown code state: undefined line 262: unknown code state: undefined line 263: unknown code state: undefined line 264: unknown code state: undefined line 265: unknown code state: undefined line 266: unknown code state: undefined (This repeats around 1000 times. I'm removing it from this paste...) [Unknown]: ticks total nonlib name 34 79.1% [Shared libraries]: ticks total nonlib name 8 18.6% 0.0% /usr/local/bin/node 1 2.3% 0.0% /usr/lib/system/libsystem_kernel.dylib [JavaScript]: ticks total nonlib name [C++]: ticks total nonlib name [GC]: ticks total nonlib name 0 0.0% [Bottom up (heavy) profile]: Note: percentage shows a share of a particular caller in the total amount of its parent calls. Callers occupying less than 2.0% are not shown. ticks parent name 8 18.6% /usr/local/bin/node 1 2.3% /usr/lib/system/libsystem_kernel.dylib 

我期待它在[JavaScript]部分显示“testing”function。 为什么不在那里?

nprof使用tick处理器的v8.log格式与你有什么不同

我在node-tick (目前与节点0.8.2 afaik兼容)中遇到同样的问题 。

可能的解决scheme:

  • 尝试节点刻度
  • 尝试以前版本的nprof( npm install profiler@1.2.0

或者您可以尝试使用节点版本的脚本重buildnprof:

  git clone https://github.com/bnoordhuis/node-profile git clone https://github.com/joyent/node cd node git checkout v0.8.7-release # can't see tag for 0.8.2 cp deps/v8/tools/*.js ../node-profile/tools/v8 cd ../node-profile sh tools/build-nprof