带有 --prof 选项的节点创建多个日志文件而不是一个 v8.log

Vip*_*esh 5 linux ubuntu node.js

我正在尝试使用“--prof”选项来分析我的 Node 应用程序,但我看到不是一个单独的 v8.log 文件,而是创建了多个文件,这些文件使用了诸如isolate-0x9582b40-v8.log、isolate-0xa1cab78-v8-6049 这样的前缀.log、isolate-0xa7ffb40-v8.log、isolate-0xb5900468-v8.log、isolate-0xb6200468-v8-6049.log。

我无法使用 Linux-tick-processor 处理这些文件,因为我不知道要使用哪个文件进行处理。

我在 Vm VirtualBox 上运行以下配置 Ubuntu 12.4 Lts。节点版本 0.12.0

uname -a 的输出

Linux ubuntu 3.8.0-44-generic #66~precise1-Ubuntu SMP Tue Jul 15 04:04:23 UTC 2014 i686 i686 i386 GNU/Linux

节点 -v 的输出

v0.12.0

J S*_*rry 9

我在这个聚会上迟到了,但是如果您像这样调用分析器:

node --prof --no-logfile-per-isolate example.js
Run Code Online (Sandbox Code Playgroud)

您将获得一个名为v8.log. 然后你可以做这样的事情:

node --prof --no-logfile-per-isolate example.js && node --prof-process v8.log > example.v8log.txt
Run Code Online (Sandbox Code Playgroud)

注意:这将导致单个输出文件,因此如果您需要每个隔离的文件,您可以使用该--logfile选项:

node --prof --logfile=foo.log example.js
Run Code Online (Sandbox Code Playgroud)

这仍会将十六进制隔离标识符放在文件名中,但附加您随--logfile选项提供的值,导致文件如下所示:isolate-0x103801e00-foo.logisolate-0x104000000-foo.log依此类推。

如果您不喜欢v8.log文件名,请结合使用--logfile--no-logfile-per-isolate选项:

node --prof --logfile=foo.log --no-logfile-per-isolate example.js
Run Code Online (Sandbox Code Playgroud)

这将产生一个名为foo.log.

哈。享受!

--jsp


Vip*_*esh 3

我从我发布的另一个问题中得到了答案

从 node.js v0.12 或 io.js 1.0 开始,v8 日志记录现在是按隔离进行的,因此文件名的格式为isolate--v8.log。感谢@mscdex

/sf/answers/2142059601/