方法是在launch.json中新增自己的调试,并在tasks.json中添加自定义的编译步骤。

自定义调试

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "My Custom Debug",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "exe的路径",
            "args": ["参数1", "参数2"],
            "stopAtEntry": false,
            "cwd": "你需要的cwd",
            "environment": [],
            "console": "internalConsole",
            "preLaunchTask": "Build My Custom Debug"
        }
    ]
}

通过修改各个属性的值,可以改变常用的调试选项:

  • name:在调试菜单中展示的名字。
  • type:调试器,MSVC是cppvsdbg,gdb是cppdbg
  • program:启动的程序。
  • args:命令行参数。
  • cwd:相对地址的参考点。
  • preLaunchTask:编译的命令,需要在tasks.json中说明。不需要编译可以删除此项。

自定义编译

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build My Custom Debug",
            "type": "shell",
            "command": "编译命令",
            "options": {
                "cwd": "",
            }
        }
    ]
}

另外在options下还可以配置envshell。参考Custom Tasks的文档

断点为灰色

一般这就是没有成功加载符号的体现,常见两种原因:

  • 没加-g所以根本就没有调试信息,可以用file检查。
  • 用 clang 的时候没加-gdwarf-4导致用了 gdb 读不到 DWARF5 调试信息,提示Dwarf Error: DW_FORM_strx1 found in non-DWO CUllvm#56522