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

解决Mac下Vscode编译运行C语言程序会自动生成DSYM文件夹的问题

🎉 前言

好久没写C语言了,今天打开Vscode打算写点程序练练手,结果发现一个让我非常苦恼的事情,那就是每次我运行程序的时候,左侧的资源管理器就会生成一大堆的文件,如图:
在这里插入图片描述
强迫症犯了,运行一个程序就生成这么一大堆文件,简直是噩梦!

终端输出了以下内容:

 正在执行任务: gcc -Wall -Wextra -g3 /Users/XXX/Documents/C/test.c -o /Users/XXX/Documents/C/output/test 

后来上网查了一下,发现-g3 选项用于生成包含额外调试信息的可执行文件,这也可能导致生成更多相关文件。

于是我打开task.json文件,发现如下配置

"args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"],

我发现编译参数确实是’-g’,不是’-g3’啊,这我就纳闷了。

后来阴差阳错之间,我发现每次右下角都会有一个编译成功的提示信息:
在这里插入图片描述
我突然想到,会不会是扩展的问题,于是我点击齿轮按钮并选择“管理扩展”,跳转到以下界面:
在这里插入图片描述
如图,点击扩展设置,进入设置界面:
在这里插入图片描述

哦,原来如此,原来’-g3’是在这里设置的,我们只需要将默认的-Wall -Wextra -g3改为-g0即可。

这里第三点指定了将编译后的文件存储到output文件夹下,这里我没有更改,因为我觉得这个配置挺好的,可以很好的管理我的编译文件,防止和源文件混杂在一起。

再回到源文件,按下’F6’就能正常编译运行,且不会产生一大堆文件了。

🎉 补充

这里补充一点解决问题时的日志,纯粹是个人记录,可以不用在意这一段内容。

1.修改launch.json将外部控制台设置为true,可以使用ctrl+f5或者点击右上角运行按钮,选择最后一个“运行C/C++文件”,此时会调出自带终端,若使用F6则会调出item2(setting.json配置过),同时生成output文件夹。说明前者是按照launch.json文件为依据运行,后者是根据setting.json和扩展complie-run来运行的。

2.若在launch.json中不修改为外部控制台,则ctrl+f5失效,具体体现在会提示以下信息:

在这里插入图片描述在这里插入图片描述

此时即使点击允许还是无法运行,同时还会生成DSYM文件夹(注意不是output文件夹),点击右上角运行按钮的情况一模一样,但是按下f6依然正常工作,同时生成output文件夹,再次印证ctrl+f5f6是根据不同的配置文件来运行程序的

综上:要想既可以通过ctrl+F5的方式运行程序,又可以通过f6运行程序,只需要将launch.json文件里的是否调用外部终端设置为true即可。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • spring-boot-maven-plugin插件打包和java -jar命令执行原理
  • C语言中数据类型
  • Java ETL - Apache Beam 简介
  • CQRS模型解析
  • Git换行符自动转换参数core.autocrlf的用法
  • 第一个Web项目(java+servlet+jsp)
  • 五种数据库特性对比(Redis/Mysql/SQLite/ES/MongoDB)
  • 人工智能 | 基于ChatGPT开发人工智能服务平台
  • git 本地分支误删,怎么恢复?误删本地已提交未推送的分支!
  • Android 如何实现搜索功能:本地搜索?数据模型如何设计?数据如何展示和保存?
  • 二分算法——优选算法
  • [Python学习日记-26] Python 中的文件操作
  • 数据结构-树(基础,分类,遍历)
  • 黑马智数Day1
  • C++——将数组a[5]={-1,2,9,-5,7}中小于0的元素置成0。并将其结果输出(要求:用数组名作为函数的参数来实现)
  • php的引用
  • hexo+github搭建个人博客
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【知识碎片】第三方登录弹窗效果
  • Android单元测试 - 几个重要问题
  • ES6简单总结(搭配简单的讲解和小案例)
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python 基础起步 (十) 什么叫函数?
  • Terraform入门 - 3. 变更基础设施
  • unity如何实现一个固定宽度的orthagraphic相机
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 类orAPI - 收藏集 - 掘金
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 算法-图和图算法
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 优秀架构师必须掌握的架构思维
  • 自定义函数
  • 7行Python代码的人脸识别
  • 大数据全解:定义、价值及挑战
  • ​ArcGIS Pro 如何批量删除字段
  • #{}和${}的区别是什么 -- java面试
  • #Linux(帮助手册)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Java入门)抽象类,接口,内部类
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)程序员技术练级攻略
  • .env.development、.env.production、.env.staging
  • .form文件_一篇文章学会文件上传
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .Net 知识杂记