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下面了,如果有同学和我这个奇葩工程一样的,记得修改这一项

相关推荐
泽02022 小时前
C++入门(缺省参数/函数/引用)
开发语言·c++
mozun20206 小时前
VS BUG(6) LINK : fatal error LNK1158: 无法运行“rc.exe”
c++·bug·vs·链接器·资源文件
whoarethenext7 小时前
初始https附带c/c++源码使用curl库调用
服务器·c++·qt·https·curl
cloues break.8 小时前
C++进阶----多态
开发语言·c++
Despacito0o8 小时前
C++核心编程:类与对象全面解析
开发语言·c++
CodeWithMe11 小时前
【C++】线程池
开发语言·c++
wuqingshun31415912 小时前
蓝桥杯 2. 确定字符串是否是另一个的排列
数据结构·c++·算法·职场和发展·蓝桥杯
hu_yuchen12 小时前
C++:BST、AVL、红黑树
开发语言·c++
炯哈哈12 小时前
【上位机——MFC】视图
开发语言·c++·mfc·上位机
我也不曾来过112 小时前
继承(c++版 非常详细版)
开发语言·c++