用vscode调试cpp程序相关操作记录

news2024/11/13 7:53:13

需要在服务器上用vscode调试cpp程序,写此记录launch.json配置和相关步骤错误导致的问题
1.在需要运行程序的服务器上安装C/C++ Extension Pack(之前只在本地装了),可以支持调试C/C++应用程序(设置断点,单步执行,查看变量和调用栈等)

在这里插入图片描述
在这里插入图片描述
安装成功后,会显示安装在了哪里

2.配置launch.json

{
    "version": "0.2.0",
    //调试器一
    "configurations": [
        {
            "name": "(gdb) HDR",				
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/Cmodel/run/xk_isp.o"
            "args": ["-if", "../../Image/input/picture1.f",
                     "-mf", "../../Image/input/picture2.f",
                     "-lf", "../../Image/input/picture3.f",
                     "-o", "../../Image/output/",
                     "-p", "./config/config.txt",
                     "-f", "raw",
                     "-s", "true"],       
            "stopAtEntry": false, 
            
            "cwd": "${workspaceFolder}/Cmodel/run",             
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                },
            ],
            "miDebuggerPath": "/usr/bin/gdb", 
        },
       	//调试器二
        {
            "name": "(gdb) noHDR",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/Cmodel/run/xk_isp.o",
            "args": ["-i", "../../Image/input/rgbb_12bpp_1920x1080_hdr.raw",
                     "-o", "../../Image/output/",
                     "-p", "./config/config_basepipe.txt",
                     "-f", "rgb",
                     "-s", "false"],                       
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/Cmodel/run",             
            "environment": [],
            "externalConsole": false, 
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                },
            ],
            "miDebuggerPath": "/usr/bin/gdb", 
        }
    ]
}
  1. “name”: “(gdb) HDR”,配置调试器名称。
    因为支持同时设置多个调试器,可以用不同名字区分,我设置了两个,这样就可以根据调试器名称任意选择对应调试器的配置,而不用手动去改args的配参
    在这里插入图片描述
  2. “type”: “cppdbg”,配置调试器类型为C++调试器
    launch.json支持多种类型的调试器,比如js,python,c++等,此处是用C++,所以设置为cppdbg。调试器类型选对了,可以避免很多不必要的问题
  3. “request”: “launch”,配置调试器请求类型为launch(启动)
    另外一种是attach(附加),没详细了解其中的区别,用的默认值
  4. “program”: “${workspaceFolder}/Cmodel/run/xk_isp.o”,//配置可执行程序路径
    ${workspaceFolder} 为vsCode打开你工程文件夹的绝对路径,
    ${workspaceFolder}/Cmodel/run/xk_isp.o 即工程编译链接完成后生成的可执行文件路径
  5. “args”: [“-if”, “…/…/Image/input/picture1.f”,
    “-mf”, “…/…/Image/input/picture2.f”,
    “-lf”, “…/…/Image/input/picture3.f”,
    “-o”, “…/…/Image/output/”,
    “-p”, “./config/config.txt”,
    “-f”, “raw”,
    “-s”, “true”],配置main(int argc,char* argv[])传参
    等效于argc = 15,
    argv[0] = ${workspaceFolder}/Cmodel/run/xk_isp.o 执行文件的绝对路径
    argv[1] = “-if”
    argv[2] = “…/…/Image/input/picture1.f”
    argv[3] = “-mf”
  6. “stopAtEntry”: false, 设置启动调试后,不停止在第一行程序,直接运行直到碰到第一个断点
  7. “cwd”: “${workspaceFolder}/Cmodel/run”, 配置可执行文件所在目录。

对于main函数带传参且参数包含相对路径的,这个配置会比较重要。最开始用的${workspaceFolder},调试运行报错“找不到…/…/Image/input/picture1.f文件”
因为不用调试模式直接运行时,工程是通过执行bash脚本来编译链接并运行可执行程序,比如最后一行执行语句中传参的相对路径是相对本bash脚本路径,也就是${workspaceFolder}/Cmodel/run, 脚本参数中的…/…/Image/input/picture1.f 即${workspaceFolder}/Image/input/picture1.f,也就是文本实际所在位置。但是填了${workspaceFolder}之后,launch.json中args的参数…/…/Image/input/picture1.f已经不在工程目录内了

#脚本部分贴图
cd ../build/		#makefile脚本在该目录下
	make clean
	make gdb -j16 ***#需要开启调试功能,需要在原脚本文件中添加gdb编译选项,或直接-g***     
	
	echo "==============  C Linking" 
	cd ../run/
	./xk_isp.o -if ../../Image/input/picture1.f -mf ../../Image/input/picture2.f -lf ../../Image/input/picture3.f -o 	../../Image/output/ -p ./config/config.txt -f raw -s true
	

工程目录:
在这里插入图片描述
这里有两个bash脚本,只有运行命令的带参不同,所以我配置了两个调试器分别对应HDR和noHdr

  1. “externalConsole”: false, //设为false,在IDE中直接显示,true是通过外部中断,比如用命令行调试
    这时候如果设为ture,能打断点,但是在断点处停不了
  2. “miDebuggerPath”: “/usr/bin/gdb”, //设置调试器路径
    这里用了linux自带的gdb调试工具,可以通过which gdb查询路径;也可以设置为自己安装的调试器路径
  3. setupCommands不影响启动,没看具体用途

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1537525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爱帮供应链邀您参观2024杭州快递物流供应链与技术装备展览会

2024年7月8-10日 | 杭州国际博览中心 同期举办:2024中国数字物流技术与应用展 2024国际电商物流包装产业展 2024新能源商用车、物流车展 展会介绍 本届展会致力于全面展示快递物流上下游领域的创新解决方案,涵盖快递物流供应链、智能装备、AGV机器人…

正信晟锦:多年不联系的好友借钱怎么办

多年不见的老友突然出现,带着迫切的求助信息——借钱。面对这样的请求,我们该如何应对? 当一个多年未联络的朋友突然出现请求借款时,这确实是一个棘手的问题。一方面,我们可能对旧日友情存有怀念与不舍;另一方面,时间…

Windows10安装SSH

Linux运维工具-ywtool 目录 1. 打开设置2. 应用3.管理可选功能4.添加功能5.安装OpenSSH服务器6.测试是否安装成功 1. 打开设置 windows桌面按下"win l"键调出"设置"2. 应用 点击"应用"3.管理可选功能 点击"管理可选功能"4.添加功能…

【系统架构师】-计算机网络

1、网络的划分 网络性能指标:速率、带宽(频带宽度或传送线路速率)、吞吐量、时延、往返时间、利用率。 网络非性能指标:费用、质量、标准化、可靠性、可扩展性、可升级性、易管理性和可维护性。 总线型(利用率低、干扰大、价格低)、 星型(交换机转发形…

【笔记】以论文发表形式通俗理解 TCP/IP模型

【笔记】以论文发表形式通俗理解 TCP/IP模型 前言TCP/IP模型理论通俗理解 前言 在网络基础学习过程中,以前只对TCP/IP理解个字面,网上查一下能知道个字面意思,但是连起来到底是什么意思,还是一知半解的,停留在表面&am…

阿里云4核8G服务器多少钱一年?

阿里云4核8G服务器优惠价格955元一年,配置为ECS通用算力型u1实例(ecs.u1-c1m2.xlarge)4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选,CPU采用Intel(R) Xeon(R) Platinum处理器,阿里云活动链接 aliyunfuwuq…

document.documentElement.clientHeight与document.body.clientHeight的区别

网页可见区域高:document.body.clientHeight 网页正文全文高:document.body.scrollHeight clientHeight: 表示可视区域高度, 包括padding但不包括border、水平滚动条、margin的元素的高度 offsetHeight:表示可视区域高…

Jackson 2.x 系列【1】概述

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 什么是 JSON3. 常用 Java JSON 库4. Jackson4.1 简介4.2 套件4.3 模块4.…

RIPGeo代码理解(五)utils.py( 辅助函数)第一部分

​ 代码链接:RIPGeo代码实现 ├── lib # 包含模型(model)实现文件 │ |── layers.py # 注意力机制的代码。 │ |── model.py # TrustGeo的核心源代码。 │ |── sublayers.py # layer.py的支持文件。 │ |── utils.p…

【MySQL】2.MySQL数据库的基本操作

目录 数据库基本操作 查看数据库信息 查看数据库结构 显示数据表的结构(字段) 常用的数据类型 数据库管理操作 SQL语句概述 SQL分类 1.DDL:数据定义语言 1.1创建数据库和表 创建数据库 创建数据表 1.2删除数据库和表 删除数据表…

2024年【化工自动化控制仪表】考试试卷及化工自动化控制仪表模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 化工自动化控制仪表考试试卷是安全生产模拟考试一点通总题库中生成的一套化工自动化控制仪表模拟考试题,安全生产模拟考试一点通上化工自动化控制仪表作业手机同步练习。2024年【化工自动化控制仪表】考试…

langchain+chatglm3+BGE+Faiss Linux环境安装依赖

前言 本篇默认读者已经看过之前windows版本,代码就不赘述,本次讲述是linux环境配置 超短代码实现!!基于langchainchatglm3BGEFaiss创建拥有自己知识库的大语言模型(准智能体)本人python版本3.11.0(windows环境篇&…

基于Gabor滤波器的指纹图像识别,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

索尼下一代游戏主机PS5将于11月20日发售

索尼下一代游戏机PS5将于2020年11月20日发布。据悉,这款游戏机的售价可能会达到499美元(约合人民币3500元)。 我们知道游戏主机的价格低于游戏PC的价格。 既然PS5的主要硬件配置已经公开,那么现在配置一台同样配置的游戏PC需要多少…

从零开始学Spring Boot系列-集成Kafka

Kafka简介 Apache Kafka是一个开源的分布式流处理平台,由LinkedIn公司开发和维护,后来捐赠给了Apache软件基金会。Kafka主要用于构建实时数据管道和流应用。它类似于一个分布式、高吞吐量的发布-订阅消息系统,可以处理消费者网站的所有动作流…

全流程ArcGIS Pro技术应用

GIS是利用电子计算机及其外部设备,采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲,它是在一定的地域内,将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来,达到对地理和属性信息的综合管理。GIS的…

探索AI+电商领域应用与发展

AI火的已经一塌糊涂了,已经有很大一部分的企业和个人已经坐上了这趟超音速列车,但对于电商领域具体都有哪些助理,目前为止还是比较散,今天来顺一下AIGC之与电商到底带来了些什么? 一、什么是AIGC AIGC是内容生产方式…

【LeetCode-74.搜索二维矩阵】

题目详情: 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则&am…

微服务day05(中) -- ES索引库操作

索引库就类似数据库表,mapping映射就类似表的结构。 我们要向es中存储数据,必须先创建“库”和“表”。 2.1.mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型,…

[Linux]多线程(在Linux中的轻量级进程(LWP),怎么使用线程(接口))

目录 一、在Linux中的轻量级进程(LWP) 二、多线程的接口 1.创建线程(pthread_create) 2.线程ID(pthread_self) 3.线程终止 终止某个线程而不终止整个进程的三种方法: return pthread_…