{
  "debugExtensions": {
    "lldb-dap-remote": {
      "vsDebugEngineGuid": "5D0E0268-2A50-440D-84F5-997E8C09D15A",
      "VsDebugTargetInfo4": {
        "bstrCurDir": "${workspaceRoot}",
        "bstrExe": "${debugInfo.target}",
        "bstrOptions": "*"
      },
      "templates": [
        {
          "templateId": "launchMacOSlldbdap",
          "displayName": "lldb-dap 调试",
          "description": "",
          "fileExtensions": [
            "*.out",
            "*.elf"
          ],
          "initialConfiguration": {
            "comment": "了解如何配置远程调试。有关详细信息，请参阅 http://aka.ms/vslinuxdebug",
            "args": [],
            "env": {}
          }
        }
      ],
      "schema": {
        "definitions": {
          "lldb_macos_schema": {
            "type": "对象",
            "properties": {
              "comment": {
                "type": "字符串",
                "description": "指定配置文档。将忽略该值。"
              },
              "type": {
                "type": "字符串",
                "enum": [
                  "lldb-dap-remote"
                ]
              }
            }
          }
        }
      }
    },
    "cppgdb": {
      "vsDebugEngineGuid": "{ea6637c6-17df-45b5-a183-0951c54243bc}",
      "VsDebugTargetInfo4": {
        "bstrCurDir": "${workspaceRoot}",
        "bstrExe": "${debugInfo.target}",
        "bstrOptions": "*"
      },
      "templates": [
        {
          "templateId": "launchLinux",
          "displayName": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1000",
          "description": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1001",
          "fileExtensions": [
            "*.exe",
            "*.out",
            "*.elf",
            "makefile"
          ],
          "initialConfiguration": {
            "comment": "了解如何配置远程调试。有关详细信息，请参阅 http://aka.ms/vslinuxdebug",
            "debuggerConfiguration": "gdb",
            "MIMode": "gdb",
            "args": [],
            "env": {}
          }
        },
        {
          "templateId": "launchMacOS",
          "displayName": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1014",
          "description": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1015",
          "fileExtensions": [
            "*.exe",
            "*.out",
            "*.elf",
            "makefile"
          ],
          "initialConfiguration": {
            "comment": "了解如何配置远程调试。有关详细信息，请参阅 http://aka.ms/vslinuxdebug",
            "debuggerConfiguration": "gdb",
            "MIMode": "lldb",
            "args": [],
            "env": {}
          }
        },
        {
          "templateId": "launchLinuxServer",
          "displayName": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1010",
          "description": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1011",
          "fileExtensions": [
            "*.exe",
            "*.out",
            "*.elf",
            "makefile"
          ],
          "initialConfiguration": {
            "comment": "了解如何配置远程调试。有关详细信息，请参阅 http://aka.ms/vslinuxdebug",
            "debuggerConfiguration": "gdbserver",
            "args": [],
            "env": {}
          }
        },
        {
          "templateId": "attachLinuxServer",
          "displayName": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1012",
          "description": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1013",
          "fileExtensions": [
            "*.exe",
            "*.out",
            "*.elf",
            "makefile"
          ],
          "initialConfiguration": {
            "comment": "了解如何配置远程调试。有关详细信息，请参阅 http://aka.ms/vslinuxdebug",
            "debuggerConfiguration": "gdbserver",
            "processId": 0
          }
        },
        {
          "templateId": "launchWSL",
          "displayName": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1006",
          "description": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1007",
          "fileExtensions": [
            "*.exe",
            "*.out",
            "*.elf",
            "makefile"
          ],
          "initialConfiguration": {
            "comment": "了解如何配置 WSL 调试。有关详细信息，请参阅 http://aka.ms/vslinuxdebug",
            "debuggerConfiguration": "gdb",
            "args": [],
            "env": {}
          }
        }
      ],
      "schema": {
        "definitions": {
          "gdb_linux_schema": {
            "type": "object",
            "properties": {
              "comment": {
                "type": "string",
                "description": "指定配置文档。将忽略该值。"
              },
              "type": {
                "type": "string",
                "enum": [
                  "cppgdb"
                ]
              },
              "debuggerConfiguration": {
                "type": "string",
                "enum": [
                  "gdb",
                  "gdbserver"
                ],
                "description": "指定 gdb 或 gdbserver 配置。"
              },
              "args": {
                "type": "array",
                "description": "Specifies the command line arguments passed to the program being debugged.",
                "items": {
                  "type": "string"
                }
              },
              "env": {
                "type": "object",
                "description": "指定传递给被调试程序的环境变量 \"name\": \"value\" 对。"
              },
              "program": {
                "type": "string",
                "description": "指定要调试的应用程序的远程路径。仅当它与生成或部署位置中的目标可执行文件不同时才需要。"
              },
              "processId": {
                "type": "integer",
                "description": "指定要将调试程序附加到的远程进程的进程 ID (pid)。"
              },
              "remoteMachineName": {
                "type": "string",
                "description": "指定远程计算机的名称。仅当与生成计算机不同时才需要。在连接管理器中必须有一个条目。"
              },
              "cwd": {
                "type": "string",
                "description": "指定要从中运行 \"program\" 的远程计算机上的当前目录。目录必须存在。"
              },
              "gdbPath": {
                "type": "string",
                "description": "在 gdb 配置中指定要用于调试的 gdb 的完整远程路径，以及 gdbserver 配置中 gdb 的完整 Windows 路径。"
              },
              "gdbserver": {
                "type": "object",
                "description": "指定特定于使用 gdbserver 调试的属性。",
                "properties": {
                  "path": {
                    "type": "string",
                    "description": "指定要用于调试的 gdbserver 的远程路径。默认为 \"gdbserver\"。"
                  },
                  "remotePort": {
                    "type": "integer",
                    "description": "指定远程计算机上要用于 gdbserver 的端口。可选。"
                  },
                  "localPort": {
                    "type": "integer",
                    "description": "指定本地计算机上要用于与 gdbserver 通信的端口。可选。"
                  }
                }
              },
              "preDebugCommand": {
                "type": "string",
                "description": "指定要在启动 gdb 或 gdbserver 之前立即运行的远程命令。仅当该命令完成后才会开始调试。"
              },
              "disableDeploy": {
                "type": "boolean",
                "default": false,
                "description": "指示是否禁用了生成/调试分隔。启用后，此功能允许在两台不同的计算机上分别生成和调试。"
              },
              "deployDirectory": {
                "type": "string",
                "description": "指定要将可执行文件复制到的 remoteMachineName 值指定的远程计算机上的目录。"
              },
              "deploy": {
                "type": "array",
                "description": "指定部署设置的高级配置。",
                "items": {
                  "type": "object",
                  "properties": {
                    "sourceMachine": {
                      "type": "string",
                      "description": "指定要从其中复制文件的计算机(ConnectionManager 连接名称或 Windows 子系统发行版名称)，请使用连接管理器来添加新的远程计算机。使用 CMake 时，可将宏 ${debugInfo.remoteMachineName} 用作此字段的值。默认为生成计算机。"
                    },
                    "targetMachine": {
                      "type": "string",
                      "description": "指定要将文件复制到其中的计算机(ConnectionManager 连接名称或 Windows 子系统发行版名称)，请使用连接管理器来添加新的远程计算机。使用 CMake 时，可将宏 ${debugInfo.remoteMachineName} 用作此字段的值。默认为调试目标。"
                    },
                    "sourcePath": {
                      "type": "string",
                      "description": "指定 sourceMachine 上的文件位置。"
                    },
                    "targetPath": {
                      "type": "string",
                      "description": "指定 targetMachine 上的文件位置。"
                    },
                    "deploymentType": {
                      "type": "string",
                      "enum": [
                        "LocalRemote",
                        "RemoteRemote"
                      ],
                      "description": "指定部署类型。将此值设置为 LocalRemote 将意味着从本地文件系统复制到 launch.vs.json 中的 remoteMachineName 指定的远程计算机。RemoteRemote 将从 CMakeSettings.json 中指定的一台远程计算机部署到 launch.vs.json 中指定的另一台计算机。"
                    },
                    "executable": {
                      "type": "boolean",
                      "description": "指示部署的文件是否为可执行文件。"
                    }
                  }
                }
              }
            },
            "required": [
              "type",
              "debuggerConfiguration"
            ]
          },
          "gdbLinuxTemplateLayout": {
            "allOf": [
              {
                "$ref": "#/definitions/default"
              },
              {
                "$ref": "#/definitions/gdb_linux_schema"
              }
            ]
          }
        },
        "configuration": "#/definitions/gdbLinuxTemplateLayout"
      }
    },
    "cppdbg": {
      "vsDebugEngineGuid": "{ea6637c6-17df-45b5-a183-0951c54243bc}",
      "VsDebugTargetInfo4": {
        "bstrCurDir": "${workspaceRoot}",
        "bstrExe": "${debugInfo.target}",
        "bstrOptions": "*"
      },
      "templates": [
        {
          "templateId": "launchMicro",
          "displayName": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1004",
          "description": "{f3491365-10cb-44a7-8aac-f54d566ec06c}:1005",
          "fileExtensions": [
            "*.exe",
            "*.out",
            "*.elf",
            "makefile"
          ],
          "initialConfiguration": {
            "cwd": "${workspaceRoot}",
            "program": "${workspaceRoot}\\BUILD\\${workspaceRootFolderName}.elf",
            "MIMode": "gdb",
            "externalConsole": true,
            "inheritEnvironments": [
              "gcc_arm"
            ],
            "miDebuggerPath": "${env.gccpath}\\bin\\arm-none-eabi-gdb.exe",
            "setupCommands": [
              {
                "text": "文档: 了解如何配置嵌入式调试",
                "description": "有关详细信息，请参阅 http://aka.ms/vsembeddeddebug",
                "ignoreFailures": true
              },
              {
                "text": "-environment-cd ${workspaceRoot}/BUILD"
              },
              {
                "text": "-file-exec-and-symbols ${workspaceRootFolderName}.elf",
                "description": "load file",
                "ignoreFailures": false
              },
              {
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
              }
            ],
            "visualizerFile": "${debugInfo.linuxNatvisPath}",
            "showDisplayString": true,
            "miDebuggerServerAddress": "localhost:3333",
            "launchCompleteCommand": "None",
            "debugServerPath": "path-to-your\\gdbserver.exe",
            "debugServerArgs": "-f path-to-your/board.cfg",
            "serverStarted": "GDB\\ server\\ started",
            "filterStderr": true,
            "filterStdout": true
          }
        }
      ],
      "schema": {
        "definitions": {
          "cpp_linux_schema": {
            "type": "object",
            "properties": {
              "program": {
                "type": "string",
                "description": "指定远程计算机上程序可执行文件的完整路径。在使用 CMake 时，可以使用宏 ${debugInfo.fullTargetPath} 作为此字段的值。"
              },
              "type": {
                "type": "string",
                "enum": [
                  "cppdbg"
                ]
              },
              "processId": {
                "type": "integer",
                "description": "指定要将调试程序附加到的可选进程 ID。"
              },
              "sourceFileMap": {
                "type": "object",
                "description": "键是编译器源位置，值是编辑器源位置或指定进一步信息的对象。",
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "$ref": "#/definitions/cpp_linux_schema/definitions/sourceFileMapOptions"
                    }
                  ]
                }
              },
              "MIMode": {
                "type": "string",
                "description": "指示 MIDebugEngine 将连接到的已启用 MI 的控制台调试程序的类型。\n允许的值为 \"gdb\"、\"lldb\"。"
              },
              "args": {
                "type": "array",
                "description": "指定传递给程序的命令行参数。",
                "items": {
                  "type": "string"
                }
              },
              "environment": {
                "type": "array",
                "description": "指定要添加到程序环境中的环境变量。这是具有 \"name\" 和 \"value\" 属性的对象组成的数组，其中 \"name\" 对应于变量的名称，\"value\" 对应于变量的值。",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  }
                }
              },
              "targetArchitecture": {
                "type": "string",
                "description": "指定调试程序的体系结构。如果未设置此参数，将进行自动检测。\n允许的值有 x86、arm、arm64、mips、x64、amd64、x86_64。"
              },
              "visualizerFile": {
                "type": "string",
                "description": "指定调试此进程时要使用的 .natvis 文件。此选项与 GDB 整齐打印不兼容。如果使用此设置，请同时查看 \"showDisplayString\"。"
              },
              "showDisplayString": {
                "type": "boolean",
                "description": "指示在指定 visualizerFile 时是否应启用显示字符串。启用此选项可能会导致调试期间的性能下降。"
              },
              "remoteMachineName": {
                "type": "string",
                "description": "指定托管 gdb 的远程计算机以及要调试的程序。请使用连接管理器来添加新的远程计算机。使用 CMake 时，可将宏 ${debugInfo.remoteMachineName} 用作此字段的值。"
              },
              "cwd": {
                "type": "string",
                "description": "指定远程计算机上目标的工作目录。使用 CMake 时，可使用宏 ${debugInfo.defaultWorkingDirectory} 作为此字段的值。除非 CMakeLists.txt 文件中替代了默认值，否则默认值为远程工作区根目录。"
              },
              "miDebuggerPath": {
                "type": "string",
                "description": "指定已启动 MI 的调试程序(如 gdb)的路径。如果未指定，将首先在 PATH 中搜索调试程序。"
              },
              "miDebuggerServerAddress": {
                "type": "string",
                "description": "指定要连接到的已启动 MI 的调试程序服务器的网络地址。\n示例: localhost:1234。"
              },
              "disableDeploy": {
                "type": "boolean",
                "default": false,
                "description": "指示是否禁用了生成/调试分隔。启用后，此功能允许在两台不同的计算机上分别生成和调试。"
              },
              "deployDirectory": {
                "type": "string",
                "description": "指定要将可执行文件复制到的 remoteMachineName 值指定的远程计算机上的目录。"
              },
              "deploy": {
                "type": "array",
                "description": "指定部署设置的高级配置。",
                "items": {
                  "type": "object",
                  "properties": {
                    "sourceMachine": {
                      "type": "string",
                      "description": "指定将从其中复制文件的计算机，请使用连接管理器添加新的远程计算机。使用 CMake 时，可将宏 ${debugInfo.remoteMachineName} 用作此字段的值。"
                    },
                    "targetMachine": {
                      "type": "string",
                      "description": "指定要将文件复制到的计算机，请使用连接管理器添加新的远程计算机。使用 CMake 时，可将宏 ${debugInfo.remoteMachineName} 用作此字段的值。"
                    },
                    "sourcePath": {
                      "type": "string",
                      "description": "指定 sourceMachine 上的文件位置。"
                    },
                    "targetPath": {
                      "type": "string",
                      "description": "指定 targetMachine 上的文件位置。"
                    },
                    "deploymentType": {
                      "type": "string",
                      "enum": [
                        "LocalRemote",
                        "RemoteRemote"
                      ],
                      "description": "指定部署类型的描述。将此值设置为 LocalRemote 将意味着从本地文件系统复制到 launch.vs.json 中的 remoteMachineName 指定的远程计算机。RemoteRemote 将从 CMakeSettings.json 中指定的一台远程计算机部署到 launch.vs.json 中指定的另一台计算机。"
                    },
                    "executable": {
                      "type": "boolean",
                      "description": "指示部署的文件是否为可执行文件。"
                    }
                  }
                }
              },
              "setupCommands": {
                "type": "array",
                "description": "指定要执行的一个或多个 GDB/LLDB 命令，以便将基础调试器设置为具有 \"text\"、\"description\" 和 \"ignoreFailures\" 属性的对象数组。\"text\" 对应于要执行的实际命令，例如 \"-enable-pretty-printing\"。\"description\" 是可选属性，提供命令的说明。\"ignoreFailures\" 是布尔值，指示是否应忽略来自命令的失败，默认为 \"false\"。",
                "items": {
                  "$ref": "#/definitions/cpp_linux_schema/definitions/launchSetupCommands"
                }
              },
              "postRemoteConnectCommands": {
                "type": "array",
                "description": "在 GDB/LLDB 连接到调试目标后要执行的一个或多个调试程序命令。允许自定义调试对象连接状态。",
                "items": {
                  "$ref": "#/definitions/cpp_linux_schema/definitions/launchSetupCommands"
                }
              },
              "svdPath": {
                "type": "string",
                "description": "指定用户 SVD 文件的路径。"
              },
              "customLaunchSetupCommands": {
                "type": "array",
                "description": "使用其他命令替换用于启动目标的默认命令。这是具有 \"text\"、\"description\" 和 \"ignoreFailures\" 属性的对象数组。\"text\" 对应于要执行的实际命令，例如可将其设为 \"-target-attach\" 以附加到目标进程。\"description\" 是可选属性，提供命令的说明。\"ignoreFailures\" 是布尔值，指示是否应忽略来自命令的失败，默认为 \"false\"。",
                "items": {
                  "$ref": "#/definitions/cpp_linux_schema/definitions/launchSetupCommands"
                }
              },
              "launchCompleteCommand": {
                "type": "string",
                "enum": [
                  "exec-run",
                  "exec-continue",
                  "None"
                ],
                "description": "指定调试程序完全安装后，为了使目标进程运行而执行的命令。\n允许的值为 \"exec-run\"、\"exec-continue\"、\"None\"。\n默认值为 \"exec-run\"。"
              },
              "debugServerPath": {
                "type": "string",
                "description": "指定要启动的调试服务器的可选完整路径。\n默认为 null。"
              },
              "debugServerArgs": {
                "type": "string",
                "description": "指定可选调试服务器参数。\n默认为 null。"
              },
              "serverStarted": {
                "type": "string",
                "description": "指定要在调试服务器输出中查找的可选服务器启动模式。\n默认为 null。"
              },
              "filterStdout": {
                "type": "boolean",
                "description": "指示是否在 stdout 流中搜索服务器启动的模式，并将 stdout 记录到默认输出。\n默认为 \"true\"。"
              },
              "filterStderr": {
                "type": "boolean",
                "description": "指示是否在 stderr 流中搜索服务器启动的模式，并将 stderr 记录到调试输出。\n默认为 \"false\"。"
              },
              "serverLaunchTimeout": {
                "type": "integer",
                "description": "指定调试程序等待 debugServer 启动的可选时间(毫秒)。\n默认为 10000。"
              },
              "coreDumpPath": {
                "type": "string",
                "description": "指定程序的核心转储文件的可选完整路径。\n默认为 null。"
              },
              "externalConsole": {
                "type": "boolean",
                "description": "指示是否应为调试器启动控制台。如果为 \"true\"，则启动控制台。\n默认为 \"false\"。注意: 由于技术原因，在某些情况下将忽略此选项。"
              },
              "pipeTransport": {
                "$ref": "#/definitions/cpp_linux_schema/definitions/pipeTransportOptions",
                "description": "指定允许调试程序使用其他可执行文件作为管道连接到远程计算机的选项，此管道将在 Visual Studio \n和已启用 MI 的调试程序(如 gdb)之间中继标准输入/输入。"
              },
              "stopAtConnect": {
                "type": "boolean",
                "description": "如果为 true，则调试器在连接到目标后应停止。如果为 false，则连接后，调试器将继续工作。\n默认值为 false。"
              },
              "hardwareBreakpoints": {
                "$ref": "#/definitions/cpp_linux_schema/definitions/hardwareBreakpointsOptions"
              },
              "remotePrelaunchCommand": {
                "type": "string",
                "description": "指定启动调试程序前要在远程系统上执行的命令，例如 \"gdbserver :12345 a.out >& /dev/null\"。"
              },
              "remotePrelaunchWait": {
                "type": "string",
                "description": "指定运行预启动命令和启动调试程序之前等待的时间(毫秒)。目的是让预启动命令有时间执行其功能。"
              },
              "enableAsan": {
                "type": "boolean",
                "description": "在调试器中启用关于地址擦除系统错误的异常对话框。"
              }
            },
            "definitions": {
              "launchSetupCommands": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "指定要执行的调试器命令。"
                  },
                  "description": {
                    "type": "string",
                    "description": "指定命令的可选说明。"
                  },
                  "ignoreFailures": {
                    "type": "boolean",
                    "description": "指示是否应忽略来自命令的失败。如果为 \"true\"，则忽略失败。\n默认为 \"false\"。"
                  }
                }
              },
              "pipeTransportOptions": {
                "type": "object",
                "description": "指定允许调试程序使用其他可执行文件作为管道连接到远程计算机的选项，此管道将在 Visual Studio \n和已启用 MI 的调试程序(如 gdb)之间中继标准输入/输入。",
                "properties": {
                  "pipeCwd": {
                    "type": "string",
                    "description": "指定管道程序工作目录的完全限定的路径。"
                  },
                  "pipeProgram": {
                    "type": "string",
                    "description": "指定要执行的完全限定的管道命令。"
                  },
                  "pipeArgs": {
                    "type": "array",
                    "description": "指定传递给管道程序配置连接的命令行参数。",
                    "items": {
                      "type": "string"
                    }
                  },
                  "pipeCmd": {
                    "type": "array",
                    "description": "指定传递给管道程序的用于在远程目标上执行命令的命令行参数。参数应包含嵌入的字符串 \"${debuggerCommand}\"。调试器会将该字符串替换为要执行的命令。",
                    "items": {
                      "type": "string"
                    }
                  },
                  "debuggerPath": {
                    "type": "string",
                    "description": "指定目标计算机上调试程序的完整路径，例如 /usr/bin/gdb。"
                  },
                  "pipeEnv": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "指定传递给管道程序的环境变量。"
                  },
                  "quoteArgs": {
                    "type": "boolean",
                    "description": "指示是否应引用包含字符(如空格或制表符)的单个参数。如果为 \"false\"，则将不再自动引用调试程序命令。\n默认为 \"true\"。"
                  },
                  "disable": {
                    "type": "boolean",
                    "description": "指示是否应禁止使用 \"pipeTransport\"。如果设置为 \"true\"，则将禁止使用 \"pipeTransport\"，而在本地主机上运行 gdb。"
                  }
                }
              },
              "sourceFileMapOptions": {
                "type": "object",
                "properties": {
                  "editorPath": {
                    "type": "string",
                    "description": "指定编辑器要查找的源代码位置。"
                  },
                  "useForBreakpoints": {
                    "type": "boolean",
                    "description": "指示在设置断点时是否应使用源映射。\n如果为 \"false\"，仅文件名和行号用于设置断点。\n如果为 \"true\"，仅当使用此源映射时，才使用文件和行号的完整路径来设置断点。否则设置断点时仅使用文件名和行号。\n默认为 \"true\"。"
                  }
                }
              },
              "hardwareBreakpointsOptions": {
                "type": "object",
                "description": "对远程目标的硬件断点行为的显式控制。",
                "properties": {
                  "require": {
                    "type": "boolean",
                    "description": "如果为 true，请始终使用硬件断点。\n默认值为 false。"
                  },
                  "limit": {
                    "type": "integer",
                    "description": "要使用的可用硬件断点数量的可选限制。仅在“需要”为 true 且“限制”大于 0 时强制使用。\n默认值为 0。"
                  }
                }
              }
            }
          },
          "cppLinuxTemplateLayout": {
            "allOf": [
              {
                "$ref": "#/definitions/default"
              },
              {
                "$ref": "#/definitions/cpp_linux_schema"
              }
            ]
          }
        },
        "configuration": "#/definitions/cppLinuxTemplateLayout"
      }
    }
  }
}