当前位置: 首页 > article >正文

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

环境说明

有空再补充

直接贴两个json

tasks.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

{
    "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,注意这里填脚本的地址,脚本放哪里都行
    #!/bin/bash
    
    exec sudo /usr/bin/gdb "$@"
    
    在创建完脚本后,要用
    sudo chmod + x 脚本.sh
    //或者
    sudo chmod 777 脚本.sh
    
    为脚本赋予执行权限
  2. 编译时,可能会出现某某环境变量找不到的现象,"environment"就是用来解决这个的,哪个环境变量找不到,就把它塞进"environment"里,按照
    		{
                 "name": "LD_LIBRARY_PATH",
                 "value": "${workspaceFolder}/lib:$LD_LIBRARY_PATH"
            }
    
    的格式添加需要的环境变量,比如我这里就是LD_LIBRARY_PATH找不到(编译时报错提示电脑不认识.so库的路径)
  3. "program"的值是make生成的可执行文件的路径,不要被我这里误导了,我只是这个工程的环境依赖有点问题,所以生成到lib下面了,如果有同学和我这个奇葩工程一样的,记得修改这一项

http://www.kler.cn/a/533993.html

相关文章:

  • 大模型综述一镜到底(全文八万字) ——《Large Language Models: A Survey》
  • 【自然语言处理(NLP)】NLP实战:IMDB影评情感分析项目
  • Leetcode面试高频题分类刷题总结
  • 计算机基础知识(第二篇)
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.22 形状操控者:转置与轴交换的奥秘
  • Ruby 类和对象
  • 定制Centos镜像(二)
  • 使用 ElementUI 和 Spring 实现稳定可靠的文件上传和下载功能
  • 【大数据技术】编写Python代码实现词频统计(python+hadoop+mapreduce+yarn)
  • WPS的word的水印去除
  • docker 实战练习1
  • 数码分享官 | 华硕灵耀14 双屏 2025,科技与美学的完美碰撞
  • 2025年02月05日Github流行趋势
  • 冒泡排序的原理及优化
  • 【3分钟极速部署】在本地快速部署deepseek
  • Linux中系统相关指令(一)
  • 国防科大:双目标优化防止LLM灾难性遗忘
  • uniapp引入cloudflare人机验证
  • Docker深度解析:Docker 安装
  • 【蓝桥杯嵌入式】LED
  • C#中堆和栈的区别
  • 5. scala高阶之traits
  • C# 程序计算圆的面积(Program to find area of a circle)
  • Git、Github和Gitee完整讲解:丛基础到进阶功能
  • 鸿蒙Harmony-Refresh 容器组件
  • 【kafka的零拷贝原理】