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

需要在服务器上用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 cleanmake 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.mzph.cn/news/765455.shtml

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

相关文章

分类预测 | Matlab实现PSO-KELM粒子群优化算法优化核极限学习机分类预测

分类预测 | Matlab实现PSO-KELM粒子群优化算法优化核极限学习机分类预测 目录 分类预测 | Matlab实现PSO-KELM粒子群优化算法优化核极限学习机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现PSO-KELM粒子群优化算法优化核极限学习机分类预测(完整源…

ubuntu20.04安裝輸入法

文章目录 前言一、操作過程1、安装fcitx-googlepinyin2、配置language support 前言 參考文獻 一、操作過程 1、安装fcitx-googlepinyin sudo apt-get install fcitx-googlepinyin2、配置language support 第一次點擊進去,會讓你安裝 點擊ctrl和空格切換中英文…

简历指导与模板获取

简历是应聘过程当中最重要的材料,是我们在求职市场的一张名片,一份好的简历能够吸引招聘者的注意,使你在竞争激烈的求职市场中脱颖而出。 1.简历指导 以下是一份典型简历的主要部分和常见内容: 联系信息: 包括你的全…

【火猫DOTA2】Secret官宣下放四号位Ekki,教练ah fu顶替担任

1、近日Secret战队官方宣布对阵容做出调整:下放四号位选手Ekki,教练ah fu将在未来一段时间重回赛场担任四号位。 Ekki于今年1月初宣布加入Secret担任四号位,但队伍在今年的表现不甚理想,未能从西欧预选赛晋级BB别墅杯和ESL One伯明翰。在唯一成功晋级的梦幻联赛S22上,Secret也仅…

如何在linux环境上部署单机ES(以8.12.2版本为例)

ES安装(以8.12.2版本为例) 首先创建好对应的文件夹然后在对应的文件夹下执行依次这些命令 1.wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-linux-x86_64.tar.gz 2.wget https://artifacts.elastic.co/downloads/…

HCIA-Datacom H12-811 更新

完整题库及答案解析,请直接扫描上方二维码,持续更新中 在WLAN发展历史中,初级移动办公时代的主要无线协议标准不包括以下哪项? A. 802.11ac B. 802.11g C. 802.11b D. 802.11a 答案:A OSPF协议在进行主从关系选举…

mapstruct学习笔记-pojo之间的转换

1、前言 mapstruct中常用注解如Mapping,AfterMapping,BeanMapping等的使用,通过案例说明各式各样的业务pojo对象之间如何借助mapstruct完成相互之间的转换,减少代码量的同时也能突出业务逻辑流程,让你的代码里写起来更有规范可言。 2、简介 Reference Guide – MapStruct 3…

记录解决问题--activiti8.2 流程图图片由png改为svg前端不显示图片问题

1.说明 如果是vue svg显示,请查阅其他标准资料,类似使用svg标签。我这里讲的另外一种情况,链接返回的是svg文件,需要用v-html显示图片。 2.activiti6流程图图片格式 ①png格式。可以查看链接返回,以png开头。 ②前端…

scDEA一键汇总12种单细胞差异分析方法 DESeq2、edgeR、MAST、monocle、scDD、Wilcoxon

问题来源 单细胞可以做差异分析,但是究竟选择哪种差异分析方法最靠谱呢? 解决办法 于是我去检索文献,是否有相关研究呢? https://academic.oup.com/bib/article/23/1/bbab402/6375516 文章指出,现有的差异分析方法…

Vmware虚拟机强制退出Ubuntu后无法开启,报错【开机时出错: VMware Player 无法连接到虚拟机。】

1. 现象 虚拟机强制退出Ubuntu后无法开机,报错如下: 2. 解决方法 任务管理器结束VMware相关的任务

JS加密解密之字符编码知识

在前端开发中,字符编码是一个至关重要的概念,特别是在数据传输、加密和解密等方面。JavaScript作为一种常用的脚本语言,在处理字符编码时也有其独特之处。本文将详细介绍JavaScript中的字符编码知识,包括字符编码的分类和相关案例…

SpringCloud从入门到精通速成(二)

文章目录 1.Nacos配置管理1.1.统一配置管理1.1.1.在nacos中添加配置文件1.1.2.从微服务拉取配置 1.2.配置热更新1.2.1.方式一1.2.2.方式二 1.3.配置共享1)添加一个环境共享配置2)在user-service中读取共享配置3)运行两个UserApplication&…

【算法】数论——蓝桥杯笔记、最大公约数、欧拉函数模版、线性筛法求欧拉函数、快速幂 a^k%p、扩展欧几里得算法

文章目录 蓝桥杯* 最大公约数欧拉函数模版* 线性筛法 求欧拉函数* 快速幂 a^k%p扩展欧几里得算法 蓝桥杯 * 最大公约数 两个整数的最大公约数等于其中较小的那个数和两数的差的最大公约数。通过不断地用较小的数替换较大的数,并用两数的差替换较小的数,…

ElasticSearch文档操作[ES系列] - 第502篇

历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…

阿里云OSS存储的视频如何加水印

OSS是不能进行视频添加水印的,可以图片添加水印。 您可以在视频点播中进行配置: https://help.aliyun.com/zh/vod/user-guide/video-watermarks?spma2c4g.11186623.0.i2 原来的业务代码都是使用python 对oss的 视频进行上传 的,上传的视频路径已经保存到…

qt5-入门-国际化

参考: Qt 国际化(上)_w3cschool https://www.w3cschool.cn/learnroadqt/fwkx1j4j.html QT5实现语言国际化(中英文界面动态切换,超详细)_qt qevent::languagechange-CSDN博客 https://blog.csdn.net/m0_49047167/article/details/…

鸿蒙Harmony应用开发—ArkTS(stateStyles:多态样式)

Styles和Extend仅仅应用于静态页面的样式复用,stateStyles可以依据组件的内部状态的不同,快速设置不同样式。这就是我们本章要介绍的内容stateStyles(又称为:多态样式)。 概述 stateStyles是属性方法,可以…

基于springboot的4S店车辆管理系统

基于springboot的4S店车辆管理系统 的设计和实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开…

c语言食堂就餐排队问题290行

定制魏:QTWZPW,获取更多源码等 目录 题目 数据结构 函数设计 结构设计 总结 效果截图 ​ 主函数代码 题目 设计一个程序来模拟食堂就餐排队问题,通过输入学生人数和面包数量,计算有多少学生能够吃到午餐。 数据结构 该…

数字资产管理系统、企业数字资产管理软件

数字资产管理系统(DAMS)是一系列软件,它提供了一个开放平台,支持对多媒体数据的采集、创建、管理、存储、归档、检索、传输和显示。这些多媒体数据包括图像、视频、声音、文本和电影剪辑等。这些基础软件不仅是内容创作&#xff0…