我可以使用Visual Studio代码分析NodeJS应用程序吗?

x33g5p2x  于 2022-12-26  发布在  Node.js
关注(0)|答案(4)|浏览(138)

我可以使用Chrome协议成功地将VS代码调试器连接到我的远程NodeJS目标。我相信相同的协议支持性能分析和性能测量,因为这很容易从Chrome开发工具中完成,但我不确定是否可以直接从VS代码中完成。
有没有支持这个功能?我该如何使用它?

ohtdti5x

ohtdti5x1#

Visual Studio Code 1.45(2020年4月)应该会有所帮助,因为它集成了Javascript调试功能,包括分析:

新的JavaScript调试器

这个月我们继续在新的JavaScript调试器上取得进展。
默认情况下,它安装在Insiders上,并且可以在VS代码稳定中安装from the Marketplace
您可以通过启用**debug.javascript.usePreview**设置,将其与现有启动配置一起使用。
以下是本月新增的一些功能:

分析支持

您可以通过单击“调用堆栈”视图中的新“Profile”按钮或使用**Debug: Take Performance Profile**命令从Node.js或浏览器应用程序捕获CPU配置文件。
完成后,您可以选择配置文件运行的时间:直到您将其停止一段时间,或者直到您遇到另一个断点。
概要文件结束后,它被保存在工作区文件夹中,并在VS代码中可视化。
当您打开配置文件时,代码镜头会添加到您的文件中,这些文件包含函数级别和某些“热”行的性能信息。
与许多其他工具捕获的配置文件不同,记录的配置文件是源Map感知的。

cheesus在注解中提到探查器输出中的行号有问题。
因此microsoft/vscode-js-debug问题559:
原来这是因为那个位置在一个只存在于编译代码中的函数内部。
我们实际上尝试将其源代码Map回原始文件,但是在那个位置没有Map可供使用。

如果您将目标更改为es6或更新版本--现在您可以这样做,除非您的目标是Internet Explorer或Node版本〈= 4 -- TS不需要生成这些内容,行号也可以工作。
您的代码运行速度也会更快。
此调试器仅支持节点8和更高版本。
由于这个bug只在针对旧的JavaScript版本时存在,当在为比调试器本身支持的版本更旧的Node版本编译的代码上使用in-place transpilation时,以及修复这个问题所涉及的复杂性,我将把这个问题作为超出范围的问题关闭。

slsn1g29

slsn1g292#

据我所知,Chrome的开发工具中没有启动评测或堆转储等的插件/支持,但是VS代码调试器可以与开发工具调试器一起工作。
从VS Code开始,按照你的意愿开始调试,然后在Chrome/Chromium浏览器的任意一个选项卡中打开开发工具,寻找绿色图标,指示node.js调试进程正在运行(manually done via node --inspect):



单击这个绿色图标,您将看到许多用于调试node.js进程的浏览器开发工具特性,特别是memoryprofiler选项卡。

vmdwslir

vmdwslir3#

是的,有很多方法。
转到package.json并设置:

{ 
    \\ other information 

    "scripts": {
      "debug": "node --inspect-brk" 
    } 
  }

之后,运行use命令:npm run debug yourFile.js
也可以在一行node --inspect-brk yourFile.js中执行
之后:打开chrome并转到chrome://inspect
等待几秒钟,以显示远程目标,然后单击inspect

可以在代码中使用debbuger;来创建断点。
要了解更多信息,请访问documentation
在替代方案中,您可以使用VS code'Debugger for Chrome'的插件,并遵循guide

yvt65v4c

yvt65v4c4#

我想这里值得一提的是,你可以使用普通的console.profileconsole.profileEnd来评测nodejs应用程序。它会在项目根文件夹中生成.cpuprofile文件,然后你可以用VSCode打开它。

相关问题