我使用v8-profiler来配置我的NodeJS应用程序。它会生成一个.cpuprofile文件。
我曾经能够使用Google Chrome内置的DevTools可视化文件的内容。但是,Chrome最近更改了分析结果的文件格式,Chrome无法再读取.cpuprofile文件。
注意:我的目标是查看调用树和自下而上的内容。我不关心火焰图。
感谢。
答案 0 :(得分:1)
我最终下载了一个旧的Chromium版本。 http://commondatastorage.googleapis.com/chromium-browser-continuous/index.html?prefix=Win_x64/381909/
答案 1 :(得分:0)
是的,似乎格式已经改变。从NodeJS v9.11.1开始,我得到了一个类似树的JSON结构:
{
"typeId": "CPU",
"uid": "1",
"title": "Profile 1",
"head": {
"functionName": "(root)",
"url": "",
"lineNumber": 0,
"callUID": 1319082045,
"bailoutReason": "no reason",
"id": 17,
"hitCount": 0,
"children": [
{
"functionName": "(anonymous function)",
"url": "...",
"lineNumber": 726,
"callUID": 3193325993,
"bailoutReason": "no reason",
"id": 16,
"hitCount": 0,
"children": [
{
...
来自Chromium 66.0.3359.117我得到一个扁平的结构:
{
"nodes": [
{
"id": 1,
"callFrame": {
"functionName": "(root)",
"scriptId": "0",
"url": "",
"lineNumber": -1,
"columnNumber": -1
},
"hitCount": 0,
"children": [
2,
3
]
},
{
...
对我来说有用的是chrome2calltree
工具,它采用NodeJS使用的旧格式,并将其转换为.prof
文件,KCacheGrind和QCacheGrind等工具可以打开。