1. 程式人生 > 程式設計 >VSCode launch.json配置詳細教程

VSCode launch.json配置詳細教程

vscode原文地址

以下為vscode 的node.js debugger 的 launch.json 配置詳情:

啟動配置必須設定請求型別,屬性request , 分為launch(啟動) 和 attach(附加)兩種,看下面例子:

{
  "version": "0.2.0","configurations": [
    {
     ...
      "request": "launch",//請求型別為啟動

    },{
    ...
      "request": "attach", //請求型別為附加

    }
  ]
}

下面是launch 和 attach 型別共有的屬性:

  • protocol 設定除錯協議
  • auto 嘗試自動檢測目標執行時使用的協議
  • inspector 新的V8偵錯程式協議,解決遺留版本的多數問題,node versions >= 6.3 and Electron versions >= 1.7.4.
  • legacy 原始的v8偵錯程式協議,node versions < v8.0 and Electron versions < 1.7.4.
  • port除錯使用的埠
  • address TCP/IP地址,用於遠端除錯
  • localRoot 遠端除錯時對映的本地地址
  • remoteRoot 遠端除錯時的遠端目錄地址
  • sourceMaps 預設為true
  • outFiles 當map檔案不在js檔案同目錄時用於指定 sourceMaps的位置
  • restart 自動重啟除錯
  • timeout 配置自動附加的超時時間
  • stopOnEntry 自動斷點到第一行程式碼處
  • smartStep 自動跳過未對映到原始碼的程式碼
  • skipFiles :[]String,指定跳過單步除錯的程式碼
 "skipFiles": [
  "${workspaceFolder}/node_modules/**/*.js",//跳過node_modules
  "${workspaceFolder}/lib/**/*.js",//跳過lib
  "<node_internals>/**/*.js"//跳過node核心模組
 ]

trace啟用診斷輸出

以下是特定於型別 launch(啟動)的配置屬性:

  • program 指定除錯入口檔案地址
  • args :[]String 傳遞給程式的引數,可在process.argv拿到
  • cwd 指定程式啟動除錯的目錄,當vscode啟動目錄不是專案根目錄,並且除錯npm script時非常有用
  • runtimeExecutable 設定執行時可執行檔案路徑,預設是node
  • 可以是其他的執行程式,如npm、nodemon
  • runtimeArgs 傳遞給執行時可執行檔案的引數,例如:
   {
      "type": "node","request": "launch","name": "npm launch app","args":["a"],"runtimeExecutable": "npm","runtimeArgs": [
        "run-script","app","b"
      ],"port": 6666
    }

列印引數可以發現 args 、runtimeArgs都會傳給程式,但是runtimeArgs引數會緊跟可執行檔案

  • runtimeVersion 設定執行時可執行程式的版本,如果使用nvm,可以切換node.js版本
  • env 新增額外的環境變數
  • envFile 檔案載入環境變數
  • console 配置終端可以是外部終端或者內部整合終端,預設值internalConsole
  • outputCapture -如果設定為std,則程序stdout / stderr的輸出將顯示在除錯控制檯中,而不是偵聽除錯埠上的輸出。這對於直接寫入stdout / stderr流而不是使用console.*API的程式或日誌庫很有用。
  • autoAttachChildProcesses 跟蹤除錯物件的所有子過程,並自動附加到在除錯模式下啟動的子過程

以下是特定於型別 attach(附加)的配置屬性:

  • processId 指定nodejs程序id,由於每次啟動都會變,傳入"${command:PickProcess}"

questions:

1. 如果使用了符號連結怎麼除錯?

傳遞引數:

{
 "runtimeArgs": ["--preserve-symlinks"]
}

如果主指令碼也在符號連結路徑裡面,需要再傳遞一個引數"--preserve-symlinks-main",支援的版本是 Node 10+.

2. 如何除錯ECMAScript模組?

如果使用esm或傳遞--experimental-modules給Node.js以便使用ECMAScript模組,則可以傳遞這些選項通過runtimeArgs屬性:

  • "runtimeArgs" : ["--experimental-modules"] -使用Node v8.5.0 +中的實驗性ECMAScript模組支援
  • "runtimeArgs" : ["-r","esm"] -使用esm ES模組載入器(請注意,["-r esm"]如果沒有逗號,則無法使用)

到此這篇關於VSCode launch.json配置詳細教程的文章就介紹到這了,更多相關VSCode launch.json配置內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!