nodejs除錯指南

匿名人士啊餅發表於2018-07-31
現在用nodejs寫服務端的程式碼越來越多,因此,對nodejs的除錯也顯得越來越重要。
畢竟除錯的越6,找bug的效率就越高~
對於nodejs的除錯,目前方式有很多。
所以小小總結一下~

Console.log

方式:
直接在想要輸出的地方console.log

Node.js Inspect

原理:

V8引擎提供了相應的模組,可以通過TCP協議訪問對應的埠進行除錯。

debugger方式

方式:

(1).需要先在專案中的程式碼新增debugger
(2).然後在控制檯對應的專案下,執行node inspect index.js(入口檔案)
注:在Node >= 6.3的版本可以使用inspect方式,低版本使用debug方式,即node debug index.js(入口檔案)

例子:

Chrome + Node.js方式

就是使用Chrome的devtools連線上Node.js的Debugger模組進行除錯。

方式:

(1).在控制檯對應的專案下,執行node --inspect index.js(入口檔案)
或者 node --inspect-brk index.js(入口檔案)
(2).Chrome下輸入chrome://inspect,找到對應的Remote Target,如圖:
nodejs除錯指南

--inspect 與 --inspect-brk 區別

--inspect: 啟動debug模式,並監聽9229埠(預設埠);
--inspect-brk: 啟動debug模式,並監聽9229埠(預設埠),並在開始處進行斷點;
注:版本支援
  • Node.js 6.3+
  • Chrome 55+

VSCode

VSCode內建了除錯功能,可以直接連線到對應的除錯埠,進行除錯。
方式:
(1).進去VSCode的除錯皮膚,即如下圖:
nodejs除錯指南
(2).在.vscode資料夾下的launch.json進行配置對應的除錯方式,若沒有就進行建立;
i.點開下圖的紅框再點選「新增配置」;
nodejs除錯指南
(3).專案利用debug模式啟動;
注:
Node >= 6.3 使用inspect模式,低版本使用debug模式
(4).在需要的地方進行斷點,然後在VSCode的debug皮膚,開始除錯,即點選如下圖:
nodejs除錯指南
配置:
在這裡簡單的說一下我所知道的VSCode配置的方式;
目前VSCode支援除錯Nodejs的兩種方式,一種是launch,一種是attach
根據官方文件加上我的理解,主要區別:
launch是啟動程式並進行除錯;
attach是除錯某個已啟動的執行緒;
attach方式
根據官方文件,attach的方式有三種方式,
(1).Auto Attach
1.斷點
2.開啟自動開啟模式,如圖:
nodejs除錯指南
3.然後在專案中執行斷點模式;
(2).Attach to Node Process
1.選擇對應的進行模式
nodejs除錯指南
2.選擇對應的程式即可;
注意:
這種方式就不需要啟動debug模式也能進行選擇除錯,VSCode會自動開啟對應的除錯埠;
如果想看是否自動開啟埠,MAC端使用者可以使用netstat -anL 檢視
(3).Setting up an "Attach" configuration
最簡單的配置方式:
{    
    "name": "Attach to Process",   
    "type": "node",    
    "request": "attach",    
    "port": 9229
}
複製程式碼
即連線9229埠進行除錯(inspect協議預設埠為9229);
注:此方式需要專案以debug模式進行啟動;
根據文件:
Since it is a bit laborious to repeatedly find the process ID and enter it in the launch configuration, Node debug supports a command variable PickProcess that binds to the process picker (from above) and that lets you conveniently pick the process from a list of Node.js processes.
因為配置檔案是支援通過程式ID進行除錯的,但是用在配置檔案配置程式ID除錯比較費力,VSCode支援命令變數PickProcess,它繫結到程式選擇器(從上面),並且可以方便地從Node列表中選擇程式.js程式。
配置方式:
{
    "name": "Attach to Process",
    "type": "node",
    "request": "attach",
    "processId": "${command:PickProcess}"
}複製程式碼
注:此方式也是不需要以debug模式也能除錯,VSCode會開啟對應的除錯埠


ndb

待續...

參考連結:

http://nodejs.cn/api/debugger.html
https://i5ting.github.io/node-debug-tutorial/#501
https://www.jianshu.com/p/611e7be13655
https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_attaching-to-nodejs
https://segmentfault.com/a/1190000011192094
http://www.ruanyifeng.com/blog/2018/03/node-debugger.html


相關文章