vscode+CMake+Debug实现 及权限不足等诸多问题汇总

环境说明

有空再补充

直接贴两个json

tasks.json

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "cmake",
            "type": "shell",
            "command": "cmake",
            "args": [
                "../"
            ],
            "options": {
                "cwd": "${fileDirname}/../build"
            },            
        },
        {
            "label": "make",
            "type": "shell",
            "command": "make",
            "args": [],
            "options": {
                "cwd": "${fileDirname}/../build"
            }, 
        },
        {
            "label": "build",
            "dependsOn":["cmake", "make"]
        },
    ],
}

为了防止出错,"cwd": "${fileDirname}/.../build"建议写绝对地址,我的src和build是分开的,大家的不一定和我一样

launch.json

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/../lib/${fileBasenameNoExtension}",
            "args": ["para1", "para2"],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [
                {
                    "name": "LD_LIBRARY_PATH",
                    "value": "${workspaceFolder}/lib:$LD_LIBRARY_PATH"
                }
            ],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build",
            // "miDebuggerPath": "/usr/bin/gdb"
            "miDebuggerPath": "/home/USERID/Desktop/aheadform/wukong_large/Proj_01/run.sh"
        }
    ]
}
  • 注意事项
  1. 使用"miDebuggerPath": "/usr/bin/gdb"可能会导致某些接口没有足够权限调用 ,或者每次需要输入密码的情况发生,故这里改成了 "miDebuggerPath": "/home/USERID/Desktop/aheadform/xxxx/Proj_01/run.sh",用一个脚本间接启动gdb,注意这里填脚本的地址,脚本放哪里都行

    shell 复制代码
    #!/bin/bash
    
    exec sudo /usr/bin/gdb "$@"

    在创建完脚本后,要用

    shell 复制代码
    sudo chmod + x 脚本.sh
    //或者
    sudo chmod 777 脚本.sh

    为脚本赋予执行权限

  2. 编译时,可能会出现某某环境变量找不到 的现象,"environment"就是用来解决这个的,哪个环境变量找不到,就把它塞进"environment"里,按照

    json 复制代码
    		{
                 "name": "LD_LIBRARY_PATH",
                 "value": "${workspaceFolder}/lib:$LD_LIBRARY_PATH"
            }

    的格式添加需要的环境变量,比如我这里就是LD_LIBRARY_PATH找不到(编译时报错提示电脑不认识.so库的路径)

  3. "program"的值是make生成的可执行文件的路径,不要被我这里误导了,我只是这个工程的环境依赖有点问题,所以生成到lib下面了,如果有同学和我这个奇葩工程一样的,记得修改这一项

相关推荐
zwjapple14 分钟前
Eclipse集成lombok
java·ide·eclipse
未来之窗软件服务1 小时前
android 上位机调试软件-安卓串口 com ttl 调试——仙盟创梦IDE
android·ide·上位机·仙盟创梦ide
feiyangqingyun1 小时前
Qt/C++编写GB28181服务端工具/绿色版开箱即用/对标wvp-gb28181/实时画面预览/录像回放下载
c++·qt·gb28181·监控系统开发
三体世界1 小时前
Linux --TCP协议实现简单的网络通信(中英翻译)
linux·c语言·开发语言·网络·c++·windows·tcp/ip
csdn_aspnet2 小时前
C++ 检查一条线是否与圆接触或相交(Check if a line touches or intersects a circle)
c++·算法
waterHBO3 小时前
清理 pycharm 无效解释器
ide·python·pycharm
clock的时钟3 小时前
c++面向对象第4天---拷贝构造函数与深复制
开发语言·c++
CodeWithMe3 小时前
【C/C++】面试常考题目
c语言·c++·面试
子豪-中国机器人3 小时前
2025年5月18日蓝桥stema省选拔赛编程题答案解析
c++·算法·数学建模
秋风&萧瑟4 小时前
【C++】类的构造函数
开发语言·c++