node 除錯三種方式

Lena發表於2018-08-24

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 會出現如下內容

node 除錯三種方式

點選inspect 進入一個編輯視窗,如圖:

node 除錯三種方式
和其他除錯一樣,選中某個變數點選右鍵會做出更多操作

三、vscode 自帶除錯

直接在程式碼裡打斷點,然後點選小蜘蛛。如果不可調式(除錯按鈕置灰),可點選設定小齒輪,

        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceFolder}/fs.js"
        },
複製程式碼

fs.js的位置替換成想要除錯的檔案即可

皮膚中一些模組

  • local 除錯位置所在的作用域
  • watch 監視的變數
  • breakpoints 斷點位置

相關文章