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

相关推荐
shylyly_11 分钟前
list的模拟实现
数据结构·c++·链表·迭代器·list·list的模拟实现
zhengtianzuo1 小时前
006-获取硬件序列号
c++
嘵奇2 小时前
10个实用IntelliJ IDEA插件
java·ide·intellij-idea
智享食事2 小时前
VSCode+AI编程生态实战:从环境配置到智能编码的全栈指南
ide·vscode·ai编程
fqsword2 小时前
C++ 算法竞赛STL以及常见模板
c++·算法
曦月逸霜2 小时前
第五次CCF-CSP认证(含C++源码)
数据结构·c++·算法·ccf-csp
是刃小木啦~3 小时前
3D空间曲线批量散点化软件V1.0正式发布,将空间线条导出坐标点,SolidWorks/UG/Catia等三维软件通用
c++·人工智能·pyqt
喉咙痛的恐龙3 小时前
C++之“string”类的模拟实现
开发语言·c++
阿巴~阿巴~3 小时前
C/C++蓝桥杯算法真题打卡(Day3)
c语言·c++·算法·蓝桥杯
xcyxiner5 小时前
snmp wireshark 抓包
c++