node debugger除錯
可以參考原文nodejs.cn/api/debugge…
一、終端除錯
node inspect filename
複製程式碼
終端會出現如下內容
< Debugger listening on ws://127.0.0.1:9229/1cf7bae2-af1a-4eed-9c32-4502582b2836
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in fs.js:1
> 1 (function (exports, require, module, __filename, __dirname) { // async function a(params) {
2 // let r = await b()
3 // console.log(r)
debug>
複製程式碼
輸入n,向下走一步
debug>n
break in fs.js:12
10 // }
11
>12 let a = 2;
13 let b = 3;
14 function sum(a,b){
複製程式碼
常用命令
- cont, c - 繼續執行。
- next, n - 下一步。
- step, s - 跳進函式。
- out, o - 跳出函式。
- pause - 暫停執行程式碼(類似開發者工具中的暫停按鈕)。
斷點
- setBreakpoint(), sb() - 在當前行設定斷點。
- setBreakpoint(line), sb(line) - 在指定行設定斷點。
- setBreakpoint('fn()'), sb(...) - 在函式體的第一條語句設定斷點。
- setBreakpoint('script.js', 1), sb(...) - 在 script.js 的第 1 行設定斷點。
- clearBreakpoint('script.js', 1), cb(...) - 清除 script.js 中第 1 行的斷點。
資訊
- backtrace, bt - 列印當前執行框架的回溯。
- list(5) - 列出指令碼原始碼 5 行的上下文(前後各 5 行)。
- watch(expr) - 新增表示式到監視列表。
- unwatch(expr) - 從監視列表移除表示式。
- watchers - 列出所有監視器和它們的值(每個斷點會自動列出)。
- repl - 開啟偵錯程式的 repl,用於在所除錯的指令碼的上下文中進行執行。
- exec expr - 在所除錯的指令碼的上下文中執行一個表示式。
執行控制
- run - 執行指令碼(偵錯程式開始時自動執行)。
- restart - 重新啟動指令碼。
- kill - 終止指令碼。
二、Node.js的V8檢查器整合
node --inspect-brk filename
複製程式碼
開啟chrome://inspect
會出現如下內容
點選inspect 進入一個編輯視窗,如圖:
和其他除錯一樣,選中某個變數點選右鍵會做出更多操作三、vscode 自帶除錯
直接在程式碼裡打斷點,然後點選小蜘蛛。如果不可調式(除錯按鈕置灰),可點選設定小齒輪,
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/fs.js"
},
複製程式碼
fs.js的位置替換成想要除錯的檔案即可
皮膚中一些模組
- local 除錯位置所在的作用域
- watch 監視的變數
- breakpoints 斷點位置