You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下VS Code调试C代码:自动匹配当前文件对应可执行程序

直接在launch.json中动态生成可执行文件路径的方案

核心思路

利用VS Code内置变量+Shell命令,直接在launch.json的program字段中动态生成对应可执行文件的路径,无需额外脚本或中间文件。

路径转换规则拆解

根据你的构建规则,路径转换逻辑为:

  1. 将源文件路径的source/前缀替换为build/
  2. 从源文件路径中提取模块名(如source/modules/module1/test/...中的module1)
  3. 可执行文件命名规则:模块名_源文件名(去掉.c后缀)

完整launch.json配置

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug C Program",
            "type": "cppdbg",
            "request": "launch",
            // 动态生成可执行文件路径
            "program": "${workspaceFolder}/build/${fileDirname#${workspaceFolder}/source/}/$(echo \"${fileDirname}\" | awk -F '/source/modules/' '{print $2}' | awk -F '/' '{print $1}')_${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                {
                    "description": "开启gdb美观打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

配置细节解释

  • ${fileDirname#${workspaceFolder}/source/}:通过Shell字符串截取,去掉当前文件目录的${workspaceFolder}/source/前缀,得到build目录下的相对路径(如modules/module1/test)
  • $(echo "${fileDirname}" | awk -F '/source/modules/' '{print $2}' | awk -F '/' '{print $1}'):通过awk命令精准提取模块名,无论模块下有多少层级子目录,都能拿到source/modules/后的第一个目录名(即模块名)
  • ${fileBasenameNoExtension}:VS Code内置变量,直接获取当前打开文件去掉.c后缀的文件名(如aspect_test)

为什么之前的方案有问题

  1. preLaunchTask导出的环境变量:VS Code的调试进程与preLaunchTask进程是隔离的,环境变量无法直接传递到调试配置中
  2. inputs调用脚本:部分VS Code版本或配置下,inputs中无法动态获取${fileDirname}这类当前文件相关的变量,导致脚本无法正确接收参数

注意事项

  • 确保Ubuntu系统已安装awk(默认已预装)
  • 如果你的路径结构或模块名规则有调整,只需修改awk命令中的字段匹配逻辑即可

内容的提问来源于stack exchange,提问作者michael199316

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:39:40