${workspaceFolder},${fileDirname},${fileBasenameNoExtension} vscode中的launch.json以及task.json中的文件

问:
在vscode中的launch.json以及task.json中所有的文件参数,类如 w o r k s p a c e F o l d e r , {workspaceFolder}, workspaceFolder{fileDirname},${fileBasenameNoExtension}等,将这些参数全部都列举出来,画图(文件夹和文件结构图)举例说明每个参数的作用和含义

Chatgpt4.1:
以下是 VS Code 中 launch.jsontasks.json 常用的**变量(变量替换参数)**列表及其含义。后面我用一个示例文件夹结构图配合说明每个参数的作用。


一、VS Code 常用变量参数列表

变量名说明
${workspaceFolder}当前打开的工作区根目录(第一个打开的文件夹的绝对路径)
${workspaceFolderBasename}当前工作区根目录的文件夹名称(不含路径)
${file}当前编辑器打开文件的绝对路径
${fileWorkspaceFolder}当前文件所在的工作区根目录(对应${workspaceFolder},如果有多根工作区)
${relativeFile}当前文件相对于工作区根目录的相对路径
${fileBasename}当前文件名称(含扩展名)
${fileBasenameNoExtension}当前文件名(不含扩展名)
${fileExtname}当前文件的扩展名(带点,如.cpp
${fileDirname}当前文件所在文件夹的绝对路径
${cwd}当前命令执行时的工作目录(当前终端或进程的工作目录,通常等同于 ${workspaceFolder}
${lineNumber}当前光标所在的行号
${selectedText}当前选中的文本
${execPath}VS Code 可执行程序的路径
${defaultBuildTask}默认的构建任务名称
${env:XXX}访问环境变量,如 ${env:PATH}
${config:XXX}访问用户或工作区配置中的某个配置项,例如 ${config:python.pythonPath}

二、示例文件夹结构(配合变量解释)

假设你打开的工作区根目录是:

/home/shaoyoulu/project
├── src
│   ├── main.cpp
│   └── util.cpp
├── include
│   └── util.h
└── README.md

当前你在编辑器中打开的是文件 /home/shaoyoulu/project/src/main.cpp


三、变量的具体举例说明

变量对应值(基于上面示例)说明
${workspaceFolder}/home/shaoyoulu/project工作区根目录绝对路径
${workspaceFolderBasename}project工作区根目录的文件夹名
${file}/home/shaoyoulu/project/src/main.cpp当前打开文件的绝对路径
${fileWorkspaceFolder}/home/shaoyoulu/project当前文件所属的工作区根目录(等同${workspaceFolder}
${relativeFile}src/main.cpp当前文件相对于工作区根目录的路径
${fileBasename}main.cpp当前文件名(含扩展名)
${fileBasenameNoExtension}main当前文件名(无扩展名)
${fileExtname}.cpp当前文件扩展名
${fileDirname}/home/shaoyoulu/project/src当前文件所在目录的绝对路径
${cwd}/home/shaoyoulu/project当前命令执行时的工作目录,通常等同于${workspaceFolder}
${lineNumber}12(假设光标在第12行)当前光标所在的行号
${selectedText}int main()(假设选中了此文本)当前编辑器中选中的文本
${env:PATH}系统环境变量PATH的值访问环境变量,如 ${env:PATH}

四、图示说明(简化示意)

工作区根目录: /home/shaoyoulu/project
│
├── include/           <--- include目录
│      └── util.h
│
├── src/               <--- src目录 (fileDirname: .../src)
│      ├── main.cpp    <--- 当前打开文件 (file)
│      └── util.cpp
│
└── README.md          <--- 工作区根目录下文件 (relativeFile: README.md)
  • ${workspaceFolder} 指向整个 project 文件夹
  • ${fileDirname} 指向文件所在文件夹,如 .../src
  • ${fileBasenameNoExtension} 是文件名去掉扩展名,如 main
  • ${relativeFile} 是文件相对路径,如 src/main.cpp

五、总结

变量作用例子(基于示例文件)
${workspaceFolder}工作区根目录/home/shaoyoulu/project
${file}当前编辑文件绝对路径/home/shaoyoulu/project/src/main.cpp
${fileDirname}当前文件所在目录路径/home/shaoyoulu/project/src
${fileBasenameNoExtension}当前文件名(无扩展名)main
${relativeFile}当前文件相对工作区的路径src/main.cpp

### 正确配置 VSCode 的 `launch.json` 文件 在 Visual Studio Code (VSCode) 中,调试 C/C++ 程序通常需要正确配置 `.vscode/launch.json` 文件。以下是关于如何正确配置该文件以及常见的问题及其解决方案。 #### 配置 `launch.json` 一个典型的 `launch.json` 文件结构如下: ```json { "version": "0.2.0", "configurations": [ { "name": "C Program Debug", // 调试会话名称 "type": "cppdbg", // 调试器类型 "request": "launch", // 请求模式:启动或附加到现有进程 "program": "${workspaceFolder}/a.out", // 编译后的可执行程序路径 "args": [], // 传递给程序的参数列表 "stopAtEntry": false, // 是否在入口处停止 "cwd": "${fileDirname}", // 工作目录 "environment": [], // 自定义环境变量 "externalConsole": true, // 使用外部控制台窗口 "MIMode": "gdb", // 调试器模式(GDB 或 LLDB) "setupCommands": [ // 设置 GDB/Lldb 命令 { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build" // 执行预构建任务 } ] } ``` 上述配置适用于基于 GCC/GDB 的开发环境[^1]。如果使用其他编译工具链,则需调整 `"MIMode"` 和相关字段。 --- #### 常见问题及解决方案 1. **无法找到调试目标 (`Cannot find program`)** 如果报错提示找不到调试的目标程序,请确认 `${workspaceFolder}/a.out` 是实际生成的二进制文件位置。可以通过修改 `"program"` 字段指向正确的输出路径来解决问题。 2. **断点未命中** 断点可能因缺少调试信息而失效。确保编译命令中包含 `-g` 参数以启用调试支持。例如,在 Makefile 或者终端运行以下命令: ```bash gcc -g your_program.c -o a.out ``` 3. **工作目录错误** 若程序依赖特定的工作目录加载资源,可以设置 `"cwd"` 属性指定当前工作目录。默认情况下,`${fileDirname}` 表示源代码所在目录[^2]。 4. **外部控制台不可用** 当 `"externalConsole": true` 启用时,某些操作系统可能会遇到权限或其他兼容性问题。尝试将其改为 `false` 并通过内置终端查看输出。 5. **调试器版本不匹配** 如果使用的 GDB 版本较旧或者与 VSCode 插件存在冲突,建议更新至最新稳定版 GDB,并重新安装对应的 C/C++ 扩展包。 6. **多线程调试失败** 对于涉及多线程的应用程序,默认配置可能不足以满足需求。可以在 `"setupCommands"` 添加额外指令处理复杂情况,比如跟踪所有子线程的行为。 --- #### 示例代码片段 假设有一个简单的 C 程序 `main.c` 如下所示: ```c #include <stdio.h> int main() { int num = 10; printf("Number is %d\n", num); return 0; } ``` 其配套的 `tasks.json` 构建任务应写成这样以便配合 `launch.json` 使用: ```json { "label": "build", "type": "shell", "command": "gcc", "args": ["-g", "main.c", "-o", "a.out"], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } ``` 此任务会在保存文件后自动触发编译操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值