一、launch.json 常见配置项
在 Visual Studio Code (VSCode) 中,launch.json 文件用于配置调试器的活动。这个文件包含了一系列的参数,用来控制调试会话的细节,如步调路径、调试器范例、环境变量、调试设置等。
launch.json 文件的配置项比力多,下面我会列出常用的配置项,并附上一些大概的值以及它们的功能。
launch.json 配置项通常可以分为以下几类:
- version
- 范例:字符串
- 描述:指定 launch.json 文件的版本。
- 示例:
- configurations
- 范例:数组
- 描述:调试配置的数组,每个配置项对应一个调试会话。
- 示例:
- "configurations": [
- {
- // 配置项
- }
- ]
复制代码
- 调试配置项 每个调试配置项都可以包含多个子项,用来控制详细的调试活动。以下是常见的调试配置项:
1. name
- 范例:字符串
- 描述:该配置的名称,会显示在 VSCode 的调试面板中,资助你区分不同的调试配置。
- 示例:
2. type
- 范例:字符串
- 描述:指定调试器的范例,决定了使用哪种调试工具。常见的范例有:
- "cppdbg":用于 C/C++ 步调的调试。
- "node":用于 Node.js 步调的调试。
- "python":用于 Python 步调的调试。
- "chrome":用于前端 JavaScript 步调的调试(使用 Chrome 欣赏器)。
- 示例:
3. request
- 范例:字符串
- 描述:指定调试哀求的范例,有两个主要选项:
- "launch":启动并调试步调。
- "attach":附加到已运行的步调(用于远程调试或在步调已经运行的情况下调试)。
- 示例:
4. program
- 范例:字符串
- 描述:指定要调试的步调的路径。对于 C/C++ 步调,通常是编译后生成的可执行文件。
- 示例:
- "program": "${workspaceRoot}/${fileBasenameNoExtension}.exe"
复制代码 5. args
- 范例:数组
- 描述:传递给调试步调的命令行参数。
- 示例:
6. stopAtEntry
- 范例:布尔值
- 描述:指定是否在步调的入口处(如 main())停止。默认值为 false。
- 示例:
7. cwd (Current Working Directory)
- 范例:字符串
- 描述:指定调试会话的当前工作目录。假如不指定,默认使用项目的根目录。
- 示例:
- "cwd": "${workspaceRoot}"
复制代码 8. env
- 范例:对象
- 描述:为调试会话设置环境变量。
- 示例:
- "env": { "MY_VAR": "value", "NODE_ENV": "development" }
复制代码 9. externalConsole
- 范例:布尔值
- 描述:指定是否在外部控制台中运行步调。默认值是 false,即在 VSCode 内部终端中运行。
- 示例:
10. preLaunchTask
- 范例:字符串
- 描述:指定在启动调试之前运行的使命名称。例如,可以用来在调试前编译代码。
- 示例:
11. postDebugTask
- 范例:字符串
- 描述:指定调试会话结束后需要运行的使命。
- 示例:
- "postDebugTask": "cleanup"
复制代码 12. miDebuggerPath
- 范例:字符串
- 描述:指定调试器的路径(特别是 GDB 和 LLDB 等调试工具)。
- 示例:
- "miDebuggerPath": "/usr/bin/gdb.exe"
复制代码 13. MIMode
- 范例:字符串
- 描述:指定使用的调试器模式。常见的有:
- "gdb":使用 GDB 调试器。
- "lldb":使用 LLDB 调试器。
- 示例:
14. setupCommands
- 范例:数组
- 描述:指定调试器启动时执行的命令,例如启用调试器的某些特性或设置断点。
- 示例:
- "setupCommands": [ { "description": "Enable pretty printing", "text": "-enable-pretty-printing", "ignoreFailures": true } ]
复制代码 15. miDebuggerArgs
- 范例:字符串
- 描述:传递给调试器的额外命令行参数。
- 示例:
- "miDebuggerArgs": "--args"
复制代码 16. sourceFileMap
- 范例:对象
- 描述:将源文件路径映射到调试会话中。用于调试时源代码位置与当前目录不一致的情况。
- 示例:
- "sourceFileMap": { "/usr/src/app": "${workspaceFolder}" }
复制代码 17. windows
- 范例:对象
- 描述:为 Windows 平台设置特定的调试配置。它可以包含一些与 Windows 特性相关的设置。
- 示例:
- "windows": { "program": "C:\\path\\to\\your\\program.exe" }
复制代码 完整示例
以下是一个完整的 launch.json 配置示例,演示了如何配置 C++ 步调的调试:
- { "version": "0.2.0"
- , "configurations": [ { "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示 "type": "cppdbg"
- , // 配置范例,这里只能为cppdbg "request": "launch"
- , // 哀求配置范例,可以为launch(启动)或attach(附加) "program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",// 将要进行调试的步调的路径 "args": [], // 步调调试时传递给步调的命令行参数,一样平常设为空即可 "stopAtEntry": false, // 设为true时步调将暂停在步调入口处,一样平常设置为false "cwd": "${workspaceRoot}",// 调试步调时的工作目录,一样平常为${workspaceRoot}即代码所在目录 "environment": [], "externalConsole": false,// 调试时是否显示控制台窗口,true显示控制台, 默认值是 false,即在 VSCode 内部终端中运行 "MIMode": "gdb", //指定使用的调试器模式 "miDebuggerPath": "D:\\Asoftware\\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\\mingw64\\bin\\gdb.exe",// 注意这里要与MinGw的路径对应, 指定调试器的路径(特别是 GDB 和 LLDB 等调试工具)。 "preLaunchTask": "build", // 调试会话开始前执行的使命,一样平常为编译步调,c++为g++, c为gcc "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ]}
复制代码
二、tasks.json 常见配置项
在 Visual Studio Code (VSCode) 中,tasks.json 文件用于定义和配置使命(例如编译、构建、清算等使命),并将这些使命与快捷键、菜单项或调试使命关联。通过配置 tasks.json 文件,开发者可以在 VSCode 内部主动化常见使命。
以下是 tasks.json 文件中常见的配置项和参数的详细列表,而且按照与你要求的格式进行描述。
tasks.json 文件的配置项也可以分为几个部分。主要分为:
1. version
- 范例:字符串
- 描述:指定 tasks.json 文件的版本。
- 示例:
2. tasks
- 范例:数组
- 描述:定义详细使命的数组,每个使命对应一个命令或动作。tasks 数组中每个对象都是一个使命配置。
- 示例:
3. 使命配置项
每个使命配置项用于描述使命的活动,以下是常见的使命配置项。
1. label
- 范例:字符串
- 描述:使命的名称,会在使命列表中显示,用于辨认和触发使命。
- 示例:
- "label": "Build C++ Program"
复制代码 2. type
- 范例:字符串
- 描述:指定使命范例,常见的有:
- "shell":运行 shell 命令(例如 Bash)。
- "process":直接运行可执行步调。
- "npm":运行 npm 脚本。
- 示例:
3. command
- 范例:字符串
- 描述:使命的执行命令,通常是一个可执行文件路径或者 shell 命令。
- 示例:
4. args
- 范例:数组
- 描述:传递给命令的参数列表。
- 示例:
- "args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"]
复制代码 5. group
- 范例:对象
- 描述:使命分组,通常用于将使命归类,例如构建使命、清算使命等。它可以包含两个属性:
- kind:使命的种类(例如 "build"、"test" 等)。
- isDefault:是否为默认使命(布尔值)。假如设置为 true,按快捷键 Ctrl+Shift+B 会运行此使命。
- 示例:
- "group": { "kind": "build", "isDefault": true }
复制代码 6. problemMatcher
- 范例:数组
- 描述:与使命关联的错误匹配器。用于将使命执行后的输出与错误报告相匹配,并在编辑器中高亮显示错误。常见的匹配器有:
- "$gcc":用于 GCC 编译器的错误输出。
- "$tsc":用于 TypeScript 编译器的错误输出。
- 示例:
- "problemMatcher": ["$gcc"]
复制代码 7. isBackground
- 范例:布尔值
- 描述:指定使命是否为后台使命。当设置为 true 时,使命不会在 VSCode 中占用前台控制台。
- 示例:
8. presentation
- 范例:对象
- 描述:使命执行时的表现方式。可以包含以下配置项:
- reveal:指定使命完成时是否在 VSCode 中显示终端(可选值:"always"、"silent"、"never")。
- focus:是否在使命开始时聚焦终端。
- panel:是否使用一个新的面板显示使命输出(可选值:"shared"、"new"、"dedicated")。
- 示例:
- "presentation": { "reveal": "always", "focus": false, "panel": "new" }
复制代码 9. windows, linux, osx
- 范例:对象
- 描述:平台特定的使命配置,可以针对不同操纵体系提供不同的命令和参数。例如,假如在 Windows 上运行使命,你大概需要指定不同的命令或路径。
- 示例:
- "windows": { "command": "C:\\MinGW\\bin\\g++.exe" }
复制代码 10. cwd
- 范例:字符串
- 描述:指定使命的当前工作目录。假如不指定,默认会使用 VSCode 工作空间的根目录。
- 示例:
- "cwd": "${workspaceFolder}"
复制代码 11. env
- 范例:对象
- 描述:为使命设置环境变量。
- 示例:
- "env": { "MY_VAR": "value", "NODE_ENV": "development" }
复制代码 12. dependsOn
- 范例:数组
- 描述:指定此使命依靠的其他使命,使命会按次序执行。你可以定义一个使命依靠多个使命。
- 示例:
- "dependsOn": ["build", "test"]
复制代码 13. runOptions
- 范例:对象
- 描述:定义使命运行时的选项,通常用于处理使命的生命周期(例如是否期待使命完成、是否并行执行)。
- 示例:
- "runOptions": { "waitForAll": true }
复制代码 14. timeout
- 范例:整数
- 描述:指定使命的超时时间,单位为毫秒。凌驾这个时间使命会被逼迫停止。
- 示例:
完整示例
以下是一个完整的 tasks.json 配置示例,演示如何配置 C++ 步调的编译使命:
- {
- "version": "2.0.0",
- "tasks": [
- {
- "type": "shell",
- "label": "C/C++: g++.exe 生成活动文件",
- "command": "D:\\Asoftware\\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\\mingw64\\bin\\g++.exe",
- "args": [
- "-fdiagnostics-color=always",
- "-g",
- "${file}",
- "-o",
- "${fileDirname}\\${fileBasenameNoExtension}.exe"
- ],
- "options": {
- "cwd": "${fileDirname}"
- },
- "problemMatcher": [
- "$gcc"
- ],
- "presentation": {
- "echo": true,
- "reveal": "always",
- "focus": false,
- "panel": "shared",
- "showReuseMessage": true,
- "clear": false
- },
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "detail": "调试器生成的任务。"
- },
- {
- "type": "cppbuild",
- "label": "C/C++: cl.exe 生成活动文件",
- "command": "cl.exe",
- "args": [
- "/Zi",
- "/EHsc",
- "/nologo",
- "/Fe${fileDirname}\\${fileBasenameNoExtension}.exe",
- "${file}"
- ],
- "options": {
- "cwd": "${fileDirname}"
- },
- "problemMatcher": [
- "$msCompile"
- ],
- "group": "build",
- "detail": "编译器: cl.exe"
- }
- ]
- }
复制代码 三、问题记载
1.问题1:终端历程“D:\Asoftware\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\g++.exe '-g', 'D:\Study\Project\VScode\C++\.vscode\launch.json', '-o', 'launch.exe'”已终止,退出代码: 1。 终端将被使命重用,按恣意键关闭。
分析:
- g++ 编译命令中的输入文件错误:错误信息表明,g++ 在尝试编译 launch.json 文件,而不是 C++ 源代码文件。
- 大概的原因:你大概在 VSCode 中打开了 launch.json 文件,而不是 C++ 文件,导致 VSCode 主动将 launch.json 作为使命参数传递给了 g++ 编译命令。实际上,g++ 需要的是 C++ 源文件(例如 .cpp 文件),而不是配置文件(.json)。
解决:
1. 确保你正在编辑 .cpp 文件
- 确保在编译时,你已经打开并编辑了一个 C++ 源代码文件(如 main.cpp),而不是 .json 配置文件。假如当前编辑的是 launch.json 文件,VSCode 会将其路径传递给 g++,导致编译错误。
- 在运行编译使命之前,确保你编辑的文件是 C++ 源代码文件。
2. 检查调试配置 (launch.json)
在 launch.json 中,你需要确保配置中的 program 字段正确指向你要调试的可执行文件,而不是 launch.json 配置文件。通常,program 字段应该指向编译后的可执行文件。
3. 检查使命调用的文件
在 tasks.json 文件中,确保 g++ 编译使命的 args 中正确指向的是 .cpp 文件,而不是配置文件(如 launch.json)
2.问题2:在资源管理器窗口明显已经存在.exe文件,仍然出现弹窗:launch:program 'D:\Study\Project\VScode\C++\ClassTest.exe' does not exist
解决:检察launch.json和task.json文件中的路径是否设置一致
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |