VS Code配置自定义C++调试
方法是在launch.json中新增自己的调试,并在tasks.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中说明。不需要编译可以删除此项。
自定义编译
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build My Custom Debug",
            "type": "shell",
            "command": "编译命令",
            "options": {
                "cwd": "",
            }
        }
    ]
}
另外在options下还可以配置env和shell。参考Custom Tasks的文档。
断点为灰色
一般这就是没有成功加载符号的体现,常见两种原因:
- 没加-g所以根本就没有调试信息,可以用file检查。
- 用 clang 的时候没加-gdwarf-4导致用了 gdb 读不到 DWARF5 调试信息,提示Dwarf Error: DW_FORM_strx1 found in non-DWO CU。llvm#56522