自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Node.js應(yīng)用的可視化調(diào)試與性能分析

移動(dòng)開發(fā)
對(duì)于大多數(shù)的前端開發(fā)者來(lái)講,對(duì) Chrome 瀏覽器自帶的 DevTools 并不陌生。新版本的 Node.js 開始支持新的 Chrome DevTools Protocol,通過(guò) node --inspect app.js 即可啟動(dòng)新版本的調(diào)試協(xié)議,借助 Chrome DevTools 即可達(dá)到與以往調(diào)試 Web 頁(yè)面一樣的使用體驗(yàn)。

在 Node.js v6.3 之前的版本,調(diào)試程序使用的是舊的 V8 Debugger Protocol,可以通過(guò) node --debug app.js 來(lái)進(jìn)行。而為了能在圖形界面下進(jìn)行可視化斷點(diǎn)調(diào)試,需要借助 VSCode、WebStorm 之類的編輯器和插件,或者安裝額外的工具,比如 node-inspector 。

對(duì)于大多數(shù)的前端開發(fā)者來(lái)講,對(duì) Chrome 瀏覽器自帶的 DevTools 并不陌生。新版本的 Node.js 開始支持新的 Chrome DevTools Protocol,通過(guò) node --inspect app.js 即可啟動(dòng)新版本的調(diào)試協(xié)議,借助 Chrome DevTools 即可達(dá)到與以往調(diào)試 Web 頁(yè)面一樣的使用體驗(yàn)。

一些編輯器也開始支持新的 Node.js 調(diào)試協(xié)議,或者通過(guò)安裝 Chrome 插件 NIM 來(lái)支持。但是如果你電腦上已安裝了 Node.js 6.3+ 和 Chrome 55+,那么不再需要任何額外的工具即可輕輕松松調(diào)試你的 Node.js 程序了。

斷點(diǎn)調(diào)試

首先讓我們新建一個(gè)程序文件 app.js 以便體驗(yàn)新的調(diào)試方式:

 

  1. const http = require('http'); 
  2. const server = http.createServer(function (req, res) { 
  3.   res.writeHead(200, { 'content-type''text/html' }); 
  4.   res.end('<h1>It works!</h1>'); 
  5. }); 
  6. server.listen(3000, function () { 
  7.   console.log('Listening on http://localhost:3000'); 
  8. }); 

然后執(zhí)行以下命令啟動(dòng)程序并進(jìn)入調(diào)試模式:

  1. node --inspect app.js 

可以看到控制臺(tái)打印出以下信息:

 

  1. Debugger listening on ws://127.0.0.1:9229/1bde07a4-2afa-44b1-a3bc-45aa9977ff67 
  2. For help see https://nodejs.org/en/docs/inspector 
  3. Listening on http://localhost:3000 

此時(shí),打開 Chrome 瀏覽器(需要 Chrome 55 或更高版本),在地址欄中輸入 chrome://inspect 并按回車,會(huì)打開如下界面:

Node.js應(yīng)用的可視化調(diào)試與性能分析

點(diǎn)擊界面上的 Open dedicated DevTools for Node 鏈接即可打開調(diào)試窗口:

Node.js應(yīng)用的可視化調(diào)試與性能分析

在該窗口中點(diǎn)擊 Sources 標(biāo)簽,并在左側(cè)邊欄的 file:// 下找到我們編寫的源碼文件 app.js 即可看到其源碼。如果要進(jìn)行斷點(diǎn)調(diào)試,只需要在源碼的行號(hào)上點(diǎn)一下即可:

Node.js應(yīng)用的可視化調(diào)試與性能分析

在窗口的右側(cè)邊欄,可以看到 Watch(監(jiān)視) 、 Call Stack(調(diào)用堆棧) 、 Scope(作用域) 等信息。你也可以直接在源碼窗口修改里面的代碼,并按 ⌘ + S (Windows 系統(tǒng)是 Ctrl + S )保存即可立即生效。

性能分析

通過(guò)調(diào)試界面的 Profiler 標(biāo)簽可以分析哪些 Node.js 程序的 CPU 占用比較高:

Node.js應(yīng)用的可視化調(diào)試與性能分析

我們可以借助 wrk 命令進(jìn)行簡(jiǎn)單的 HTTP 接口測(cè)試。首先點(diǎn)擊界面中的 Start 按鈕開始記錄 CPU 占用信息,然后在命令行窗口執(zhí)行以下命令(啟動(dòng) 5 個(gè)線程,100 個(gè)并發(fā)連接,持續(xù) 1 分鐘):

  1. wrk -c 100 -t 5 -d 1m http://localhost:3000/ 

等待 1 分鐘,命令執(zhí)行完畢后,在 DevTools 界面點(diǎn)擊 Stop 按鈕,即可看到如下的結(jié)果:

Node.js應(yīng)用的可視化調(diào)試與性能分析

另外還可以通過(guò) Memory 標(biāo)簽來(lái)進(jìn)行內(nèi)存占用相關(guān)的分析。

調(diào)試 TypeScript 程序

如果你的程序是使用 TypeScript 編寫的,可以借助 ts-node 來(lái)啟動(dòng)調(diào)試模式:

  1. ts-node --inspect app.ts 

或者:

  1. node --inspect --require ts-node/register app.ts 

調(diào)試正在運(yùn)行的 Node.js 進(jìn)程

如果程序啟動(dòng)的時(shí)候沒(méi)有加上 --inspect 選項(xiàng),為了讓它進(jìn)入調(diào)試模式,可以給該進(jìn)程發(fā)送 SIGUSR1 信號(hào)來(lái)調(diào)試(92801 是被調(diào)試 Node.js 進(jìn)程的 PID,根據(jù)實(shí)際情況替換):

  1. kill -s SIGUSR1 92801 

可以看到該進(jìn)程控制臺(tái)會(huì)打印出以下提示:

 

  1. Debugger listening on ws://127.0.0.1:9229/cc35d4da-c8ae-42e3-943a-8ac81d5c067a 
  2. For help see https://nodejs.org/en/docs/inspector 

此時(shí)按照上文的方法使用 Chrome DevTools 調(diào)試即可。

責(zé)任編輯:未麗燕 來(lái)源: 早起搬磚
相關(guān)推薦

2020-12-04 17:15:17

數(shù)據(jù)可視化node.js

2020-07-31 13:35:34

Node.js應(yīng)用分析前端

2012-02-02 15:14:29

Node.js

2015-12-14 10:39:14

2015-11-04 09:18:41

Node.js應(yīng)用性能

2019-07-09 14:50:15

Node.js前端工具

2017-03-19 16:40:28

漏洞Node.js內(nèi)存泄漏

2017-03-20 13:43:51

Node.js內(nèi)存泄漏

2021-05-21 09:36:42

開發(fā)技能代碼

2023-03-07 14:31:44

Node.jsPython應(yīng)用程序

2020-09-04 15:06:04

Docker容器化Node.js

2020-01-03 16:04:10

Node.js內(nèi)存泄漏

2022-10-28 15:51:24

JavaScript開發(fā)Node.js

2013-11-01 09:34:56

Node.js技術(shù)

2011-11-10 11:08:34

Node.js

2021-12-01 00:05:03

Js應(yīng)用Ebpf

2017-02-07 15:54:14

數(shù)據(jù)可視化數(shù)據(jù)分析

2015-03-10 10:59:18

Node.js開發(fā)指南基礎(chǔ)介紹

2022-08-28 16:30:34

Node.jsDocker指令

2020-12-14 15:40:59

Nodefastifyjs
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)