用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粒子群优化算法优化核极限学习机分类预测(完整源…

使用GPT2预训练模型的方法

使用GPT2预训练模型的方法 flyfish transformers库对所有模型统一的API 安装 pip install transformersGPT2模型主要包括以下文件 config.json merges.txt model.safetensors tokenizer.json tokenizer_config.json vocab.json模型所在目录 \.cache\huggingface\hub\model…

【Linux之·指令gnome-terminal】

系列文章目录 文章目录 前言一、用法1.1 gnome-terminal1.2 $$ $! 总结 前言 一、用法 1.1 gnome-terminal 功能:Linux 新打开一个shell窗口并获取新打开shell窗口自身的pid gnome-terminal -- bash -c echo $! ; echo $$;exec bash gnome-terminal -- bash -c &…

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 文章指出,现有的差异分析方法…

brew命令

//查看brew的版本 brew -v//更新homebrew自己,把所有的Formula目录更新,并且会对本机已经安装并有更新的软件用*标明 brew update//查看命令帮助: brew -help//查看那些已安装的程序需要更新 brew outdated//更新单个软件: brew u…

LLM预测训练集数据重复、长度超出label

遇到一个场景, 拿几条数据用LORA微调了LLM, 根据Loss看已经接近了0, 但是拿训练集里的数据预测时 ,不管怎么调节generate的参数, 预测结果总是不对, 有整段话重复生成的结果, 有不重复生成&…

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

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

LeetCode hot100-17

41. 缺失的第一个正数给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 这题要求空间复杂度为O(1),要么定义单个变量,要么原地操作。定义长度为n的数…

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的 视频进行上传 的,上传的视频路径已经保存到…