一篇帶給你Vscode調試Node.js指南
前言:調試代碼不管對于開發還是學習源碼都是非常重要的技能,本文簡單介紹vscode調試Node.js相關代碼的調試技巧。
一、調試業務JS
調試業務JS可能是普遍的場景,隨著Node.js和調試工具的成熟,調試也變得越來越簡單。下面是vscode的lauch.json配置。
- {
- "version": "0.2.0",
- "configurations": [
- {
- "type": "node",
- "request": "attach",
- "name": "Attact Program",
- "port": 9229
- }
- ]
- }
1.在JS里設置斷點,執行node --inspect index.js 啟動進程,會輸出調試地址。
2.點擊蟲子,然后點擊綠色的三角形。
3.vscode會連接Node.js的WebSocket服務。
4.開始調試(或者使用Chrome Dev Tools調試)。
二 調試Addon的C++
寫Addon的場景可能不多,但是當你需要的時候,你就會需要調試它。下面的配置只可以調試C++代碼。
- {
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Debug node C++ addon",
- "type": "lldb",
- "request": "launch",
- "program": "node",
- "args": ["${workspaceFolder}/node-addon-examples/1_hello_world/napi/hello.js"],
- "cwd": "${workspaceFolder}/node-addon-examples/1_hello_world/napi"
- },
- ]
- }
1.在C++代碼設置斷點。
2.執行node-gyp configure && node-gyp build --debug編譯debug版本的Addon。
3. JS里加載debug版本的Addon。
4.點擊小蟲子開始調試。
三、調試Addon的C++和JS
Addon通常需要通過JS暴露出來使用,如果我們需要調試C++和JS,那么就可以使用以下配置。
- {
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Debug node C++ addon",
- "type": "node",
- "request": "launch",
- "program": "${workspaceFolder}/node-addon-examples/1_hello_world/napi/hello.js",
- "cwd": "${workspaceFolder}/node-addon-examples/1_hello_world/napi"
- },
- {
- "name": "Attach node C/C++ Addon",
- "type": "lldb",
- "request": "attach",
- "pid": "${command:pickMyProcess}"
- }
- ]
- }
和2的過程類似,點三角形開始調試,再選擇Attach node C/C++ Addon,然后再次點擊三角形。
選擇attach到hello.js中。
開始調試。
四、調試Node.js源碼C++
我們不僅用Node.js,我們可能還會學習Node.js源碼,學習源碼的時候就少不了調試。可以通過下面的方式調試Node.js的C++源碼。
- ./configure --debug && make
使用以下配置:
- {
- "version": "0.2.0",
- "configurations": [
- {
- "name": "(lldb) 啟動",
- "type": "cppdbg",
- "request": "launch",
- "program": "${workspaceFolder}/out/Debug/node",
- "args": [],
- "stopAtEntry": false,
- "cwd": "${fileDirname}",
- "environment": [],
- "externalConsole": false,
- "MIMode": "lldb"
- }
- ]
- }
在node_main.cc的main函數或任何C++代碼里打斷點,點擊小蟲子開始調試。
五、調試Node.js源碼C++和JS代碼
Node.js的源碼不僅僅有C++,還有JS,如果我們想同時調試,那么就使用以下配置。
- {
- "version": "0.2.0",
- "configurations": [
- {
- "name": "(lldb) 啟動",
- "type": "cppdbg",
- "request": "launch",
- "program": "${workspaceFolder}/out/Debug/node",
- "args": ["--inspect-brk", "${workspaceFolder}/out/Debug/index.js"],
- "stopAtEntry": false,
- "cwd": "${fileDirname}",
- "environment": [],
- "externalConsole": false,
- "MIMode": "lldb"
- }
- ]
- }
1.點擊調試。
2.在vscode調試C++,執行完Node.js啟動的流程后會輸出調試JS的地址。
3.在瀏覽器連接WebSocket服務調試JS。