使用 launch.json 配置調試環境時,會涉及到多個參數,用于定義調試器的行為和目標執行環境。以下是一些常用的配置參數:
1、"type" :指定調試器的類型,例如 "node" 表示 Node.js 調試器,"python" 表示 Python 調試器,"java" 表示 Java 調試器等。
2、"request" :指定調試的請求類型,可以是 "launch"(啟動一個新的進程)或 "attach"(附加到已有的進程)。
3、"name" :為配置提供一個友好的名稱,方便識別不同的調試配置。
4、"program" :用于指定程序的入口文件路徑,可以是絕對路徑或相對于工作目錄的路徑。 5、"args" :傳遞給程序的命令行參數,以數組形式提供。
6、"cwd" :指定程序的工作目錄,可以是絕對路徑或相對于工作目錄的路徑。
7、"env" :設置程序運行時的環境變量,以對象形式提供。
8、"stopOnEntry" :設置為 true 時,在啟動后會在入口處停止,等待調試器連接。 9、"preLaunchTask" :指定在啟動調試前運行的任務,通常是一個編譯任務。
10、"postDebugTask" :指定在調試結束后運行的任務,比如清理任務。
11、"outFiles" :設置輸出文件的路徑,用于映射源代碼和編譯后的文件。
12、"sourceMaps" :控制是否啟用源代碼映射,可以是 "inline"、"both" 或 "false"。 13、"sourceMapPathOverrides" :用于根據源代碼映射調整文件路徑。
14、"externalConsole" :設置為 true 時,將在外部控制臺中運行程序。
15、"internalConsoleOptions" :控制內部控制臺的顯示方式,可以是 "neverOpen"、"openOnSessionStart" 或 "openOnFirstSessionStart"。
16、"showAsyncStacks" :設置為 true 時,在堆棧跟蹤中顯示異步調用的信息。
17、"stopOnError" :設置為 true 時,當發生錯誤時暫停調試。
18、"smartStep" :設置為 true 時,跳過無需調試的代碼。
19、"skipFiles" :指定不需要調試的文件或文件夾。
20、"justMyCode" :設置為 true 時,只調試自己的代碼。 通過對這些常用配置參數的理解,可以根據不同的調試場景和需求,靈活地配置 launch.json 文件,從而更高效地進行代碼調試。
常見的調試場景以及相應的 launch.json 配置示例。以下是一些常用編程語言和場景的示例: 1. Node.js 調試
{"version": "0.2.0","configurations": [{"type": "node","request": "launch","name": "Node.js Launch","program": "${file}","cwd": "${workspaceFolder}","runtimeExecutable": "node"}]
}
Java 調試
{"version": "0.2.0","configurations": [{"type": "java","name": "Java Debug","request": "launch","cwd": "${workspaceFolder}","console": "internalConsole","stopOnEntry": false,"mainClass": "${file}"}]
}
Python 調試
{"version": "0.2.0","configurations": [{"name": "Python: Current File","type": "python","request": "launch","program": "${file}","console": "integratedTerminal","env":{"PYTHONPATH": "",},"args": []},]
}
C# 調試
{"version": "0.2.0","configurations": [{"name": ".NET Core Launch (console)","type": "coreclr","request": "launch","preLaunchTask": "build","program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/app.dll","args": [],"cwd": "${workspaceFolder}","stopAtEntry": false,"serverReadyAction":{"action": "openExternally","pattern": "\bNow listening on:\s+(https?://\S+)"},"env":{"ASPNETCORE_ENVIRONMENT": "Development"},"sourceFileMap":{"/Views": "${workspaceFolder}/Views"}}]
}
客戶端-服務器模式調試
{"version": "0.2.0","configurations": [{"name": "Launch Client/Server","type": "node","request": "launch","cwd": "${workspaceFolder}/server","program": "${workspaceFolder}/server/app.js","env":{"NODE_ENV": "development"},"outFiles": ["${workspaceFolder}/client/dist/**/*.js"],"sourceMaps": true,"restart": true,"console": "integratedTerminal"}]
}
Web 開發調試
{"version": "0.2.0","configurations": [{"type": "chrome","request": "launch","name": "Launch Chrome","url": "http://localhost:3000","webRoot": "${workspaceFolder}/src"}]
}