vsc - debugger调试
.vscode/launch.json文件
在 launch.json 配置文件中,常见的字段和其含义如下:
"version":指定launch.json文件的格式版本。通常使用"0.2.0"。"configurations":一个包含多个调试配置的数组。每个配置是一个 JSON 对象,包含以下字段:"name":调试配置的名称,用于在 VS Code 菜单中显示。"type":指定调试器的类型,例如 "node" 表示 Node.js 调试器,"python" 表示 Python 调试器,"java" 表示 Java 调试器等。"request":指定调试的请求类型,可以是 "launch"(启动一个新的进程)或 "attach"(附加到已有的进程)。"program":指定要调试的程序或脚本的路径。module:指定运行模块(替代program),如"pytest"、"unittest""args":传递给程序的命令行参数,以数组形式提供。
"cwd":指定工作目录,即调试会话开始时的当前工作目录。其他可选字段:不同的调试器可能支持不同的字段,用于配置更详细的调试行为。
"type":指定调试器的类型,例如 "node" 表示 Node.js 调试器,"python" 表示 Python 调试器,"java" 表示 Java 调试器等。"request":指定调试的请求类型,可以是 "launch"(启动一个新的进程)或 "attach"(附加到已有的进程)。"name":为配置提供一个友好的名称,方便识别不同的调试配置。"program":用于指定程序的入口文件路径,可以是绝对路径或相对于工作目录的路径。"args":传递给程序的命令行参数,以数组形式提供。"cwd":指定程序的工作目录,可以是绝对路径或相对于工作目录的路径。"env":设置程序运行时的环境变量,以对象形式提供。"stopOnEntry":设置为true时,在启动后会在入口处停止,等待调试器连接。"preLaunchTask":指定在启动调试前运行的任务,通常是一个编译任务。"postDebugTask":指定在调试结束后运行的任务,比如清理任务。"outFiles":设置输出文件的路径,用于映射源代码和编译后的文件。"sourceMaps":控制是否启用源代码映射,可以是 "inline"、"both" 或 "false"。"sourceMapPathOverrides":用于根据源代码映射调整文件路径。"externalConsole":设置为true时,将在外部控制台中运行程序。"internalConsoleOptions":控制内部控制台的显示方式,可以是 "neverOpen"、"openOnSessionStart" 或 - "openOnFirstSessionStart"。"showAsyncStacks":设置为true时,在堆栈跟踪中显示异步调用的信息。"stopOnError":设置为true时,当发生错误时暂停调试。"smartStep":设置为true时,跳过无需调试的代码。"skipFiles":指定不需要调试的文件或文件夹。"justMyCode":设置为true时,只调试自己的代码。
常用变量(宏替换) VS Code 支持一些预定义变量,用于动态构建路径和内容:
| 变量名 | 含义 | |
|---|---|---|
${workspaceFolder} | 当前工作区根目录 | |
${workspaceFolder:name} | 多根项目中指定名称的根目录 | |
${file} | 当前打开的文件路径 | |
${fileDir} | 当前文件所在目录 | |
${fileBasenameNoExtension} | 当前文件名(不含扩展名) | |
${env:VAR_NAME} | 获取系统环境变量,例如 ${env:HOME} | |
常见配置实例
Python 调试
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env":
{
"PYTHONPATH": "",
},
"args": []
},FastAPI
{
"name": "Python Debugger: FastAPI",
"type": "debugpy",
"request": "launch",
"module": "uvicorn",
"args": [
"main:app",
"--reload"
],
"jinja": true,
"python": "${workspaceFolder}/myenv/bin/python"
}