vscode 配置编译调试环境

news/2024/7/16 7:49:40 标签: vscode, ide, 编辑器

这里记载一下配置vscode调试和编译的tips。

VScode配置文件

在使用“运行和调试”的时候,往往会在".vscode"下生成两个文件:

  • launch.json
  • tasks.json

launch.json

launch.json是运行和调试的入口,在“运行和调试”选项的上方,有一个下拉选项,旁边有一个三角形的播放按钮。按下运行和调试按钮,就会执行对应的launch.json的内容。
“name”是显示在下拉列表里的title,json里面其他的内容还有“program”表示要启动的执行文件路径和文件名、app工作目录、前置需要配的环境变量、是否在进入程序处断点、是否打开外部控制台显示程序输出、给程序传参等等。感觉就和自己手动 ./启动程序一样。

可能需要手动添加“preLaunchTask”,用来在launch之前,执行tasks.json中的操作。这里的内容需要和"tasks"中的“label”一致。才能查找到并执行。

tasks.json

tasks.json的内容主要是具体的指令,例如通过GCC进行编译的指令,或者通过shell使用其他程序或内建指令。例如调用makefile。这里需要注意的是,如果要调试,需要断点或者局部变量可以被使用和抓取,在编译时需要给gcc 传入"-g"的参数,保留调试信息。
“type”有很多种,我知道的有“cppbuild”“shell”"process"等。可能有一些差别,默认生成的是cppbuild 使用的gcc编译。据说"shell"是使用shell来执行“command”并传入“argus”."process"是直接开进程。具体的我没有了解。
但是我使用"shell"调用make 直接通过makefile编译,觉得基本上就够我用了。

tips

自动生产的json中大量使用vscode提供的一些变量 如包含在${}内的部分。我觉得在构建自己的开发环境的时候,不妨改成自己的绝对路径,这些变量会跟随当前打开的文件变化。运用不当会把workspace搞得很乱。
之前我在想如何在一个workspace(工程)中,调试多个main,即多个程序。当时库是用C写的,app用cpp。自动生成的json中只有一个gcc,编译cpp就会出问题。想了一会,就发现。其实可以通过编写不同的launch,调用不同的tasks来实现,甚至是可以把操作放在makefile里,然后通过launch的入口,在tasks里执行不同的make target。来实现多种多样的操作。可以编出c库 链接给cpp 的APP,然后直接启动gdb调试。总之 非常灵活。


http://www.niftyadmin.cn/n/211214.html

相关文章

Redux的基本使用详解(从入门到入土)

Redux的基本使用过程详解 学习文档 中文文档: http://www.redux.org.cn/ 英文文档: https://redux.js.org/ Github: https://github.com/reactjs/redux 一,redux是什么 1,介紹: redux是一个专门用于做状态管理的JS库(不是react插件库)。它…

uniapp 引入插件市场的echart插件,使用指南!+踩坑记录!!血泪史!!!

此文章适用于微信小程序中,在uniapp做的小程序中使用echarts 插件地址:echarts-for-wx - DCloud 插件市场 插件网页往下翻有详细的使用步骤,这里简短的贴上几张图片 以下是我 项目中的使用情况,分享给大家: 1.一键导…

Python零基础自学

很多零基础想做程序员的同学,最开始接触的基本上都是 Python 作为常年霸榜的 “最好上手的编程语言” ——Python,深受互联网大厂的喜爱。 而很多小伙伴反应,在刚开始学Python时遇到不少问题: 比如找不到学习资源,不…

《推荐系统实践》- 项亮

第1章 好的推荐系统 1.1  什么是推荐系统 推荐系统的基本任务是联系用户和物品,解决信息过载的问题; 推荐方式: (1)社会化推荐(social recommendation):即让好友给自己推荐物品…

ChatGPT 全面解析

ChatGPT问世 12月1日,美国人工智能公司OpenAI在网页上推出自然语言处理领域(NLP)的模型ChatGPT,它能够通过对话方式进行交互,并根据用户输入的自然语言文本内容,自动生成新的文本内容。一周内,…

第七章 C语言语句的机器级表示

C语言语句的机器级表示1、过程(函数)调用的机器级表示1.1、过程调用概述1.2、过程(函数)的机器级代码结构1.3、过程调用的参数传递1.4、过程调用举例1.5、递归调用举例1.6、过程调用举例2、选择和循环语句的机器级表示2.1、选择结…

一图看懂 zlib 模块:处理压缩和解压缩文件, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 zlib 模块:处理压缩和解压缩文件, 资料整理笔记(大全)摘要模块图类关系图模块全展开【zlib】统计常量intstr类23 zlib.error内嵌函数或方…

k8s部署Ceph

1. Helm部署 1.1 简介 为了将Ceph部署到K8S集群中,可以利用ceph-helm项目。 目前此项目存在一些限制: public和cluster网络必须一样如果Storage的用户不是admin,你需要在Ceph集群中手工创建用户,并在K8S中创建对应的Secretscep…