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

Visual Studio Code安装与C/C++语言运行(下)

4. 配置VS Code以运行C/C++程序

4.1 创建工作区文件夹

在VS Code中,你通常会在一个工作区文件夹中管理你的C/C++项目。你可以手动创建一个文件夹,并通过VS Code的“文件”->“打开文件夹”选项将其打开。

4.2 创建C/C++文件

在工作区文件夹中,创建一个新的C或C++文件(如main.cpp),并编写你的C/C++代码。

4.3 配置tasks.json以编译C/C++程序

VS Code使用tasks.json文件来定义编译任务。你可以通过以下步骤来配置它:

  1. 打开命令面板:按下Ctrl+Shift+P打开命令面板。
  2. 选择“任务:配置任务”:在命令面板中输入并选择“Tasks: Configure Task”选项。
  3. 选择“创建tasks.json文件从模板”:在弹出的选项中选择“Create tasks.json file from template”选项。
  4. 选择“Others”模板:在模板列表中选择“Others”模板,这将为你创建一个基本的tasks.json文件。
  5. 编辑tasks.json文件:在打开的tasks.json文件中,你需要配置一个编译任务。以下是一个示例配置,它使用g++编译器来编译当前工作区中的C++文件:
{
"version": "2.0.0",
"tasks": [
{
"label": "build hello world",
"type": "shell",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$gcc"
],
"detail": "compiler: g++"
}
]
}

请注意,上述配置中的${file}${fileDirname}是VS Code的变量,它们分别代表当前打开的文件和文件所在的目录。

4.4 使用编译任务

配置好tasks.json文件后,你可以通过以下步骤来编译你的C/C++程序:

  1. 打开你的C/C++文件:在VS Code中打开你想要编译的C/C++文件。
  2. 运行编译任务:按下Ctrl+Shift+B快捷键,VS Code将执行你在tasks.json中定义的编译任务。如果一切配置正确,你的C/C++程序将被编译成一个可执行文件(如main.exe),并保存在你的工作区文件夹中。
4.5 配置launch.json以调试C/C++程序

如果你想要调试你的C/C++程序,你还需要配置launch.json文件。这个文件定义了调试器的配置信息。你可以通过以下步骤来配置它:

  1. 打开调试视图:点击VS Code侧边栏中的调试图标(一个虫子形状的图标)。
  2. 选择“添加配置...”:在调试视图中,点击“添加配置...”按钮。
  3. 选择C++(GDB/LLDB):在弹出的选项中选择C++(GDB/LLDB)配置模板。
  4. 编辑launch.json文件:在打开的launch.json文件中,你需要根据你的编译器和调试器配置来编辑它。以下是一个示例配置,它使用GDB调试器来调试你的C++程序:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (GDB)", // 调试配置的名称
"type": "cppdbg", // 调试器类型,cppdbg对应GDB或LLDB
"request": "launch", // 请求类型,launch表示启动调试
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe", // 要调试的程序路径
"args": [], // 传递给程序的参数,如果不需要可以留空
"stopAtEntry": false, // 程序开始执行时是否立即停止
"cwd": "${workspaceFolder}", // 调试时的工作目录
"environment": [], // 环境变量,如果需要可以添加
"externalConsole": false, // 是否使用外部控制台
"MIMode": "gdb", // 调试器模式,对于GDB来说是gdb
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe", // GDB调试器的路径,根据你的安装路径进行修改
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build hello world", // 调试前执行的任务,对应tasks.json中的label
"miDebuggerArgs": "--interpreter=mi"
}
]
}

请注意,上述配置中的miDebuggerPath需要根据你的MinGW或GDB的实际安装路径进行修改。如果你已经将MinGW的bin目录添加到了系统的PATH环境变量中,那么VS Code通常能够自动找到GDB,此时可以省略miDebuggerPath字段。

4.6 使用调试功能

配置好launch.json文件后,你就可以使用VS Code的调试功能来调试你的C/C++程序了。以下是一些常用的调试操作:

  • 启动调试:按下F5键或点击调试面板中的“开始调试”按钮(绿色箭头图标),VS Code将根据你的launch.json配置启动调试会话。
  • 设置断点:在代码编辑器中,点击你希望程序暂停执行的行号旁边的空白区域,即可在该行设置一个断点。当调试会话运行时,程序将在遇到断点时暂停执行。
  • 单步执行:在调试控制面板中,你可以使用“单步跳过”(Step Over)、“单步进入”(Step Into)和“单步返回”(Step Out)等按钮来逐行执行代码。
  • 查看变量和调用栈:在调试会话中,VS Code的调试面板将显示当前执行位置的变量值和调用栈信息,帮助你理解程序的执行流程。

通过以上步骤,你可以在VS Code中成功安装C/C++扩展包、配置编译器和调试器、以及编写、编译和调试C/C++程序。VS Code的强大功能和灵活性使得它成为C/C++开发者的一个理想选择。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新2024/08/14)
  • 数据结构---双向循环链表
  • elementplus 二次封装 select 自定义指令上拉加载更多 完美解决 多次接口调用 重新加载数据多次调用数据!!!
  • LeetCode-字母异位词分组
  • 用R语言进行数据类型的检查和基础转换
  • 如果将一个对象赋值给 ref,那么这个对象将通过 reactive() 转为具有深层次响应式的对象。这也意味着如果对象中包含了嵌套的 ref,它们将被深层地解
  • rk3568-linux sdk编译update.img时以当前时间进行命名
  • 前端开发有什么专业术语吗?
  • Golang | Leetcode Golang题解之第335题路径交叉
  • Android 12系统源码_多屏幕(二)模拟辅助设备功能开关实现原理
  • SecureCRT for Mac/Win:安全高效的专业终端SSH工具软件
  • 重修设计模式-创建型-原型模式
  • 超详细!!!electron-vite-vue开发桌面应用之配置路由router(五)
  • CopyOnWriteArrayList技术探究
  • C:每日一题:二分查找
  • JavaScript-如何实现克隆(clone)函数
  • python3.6+scrapy+mysql 爬虫实战
  • “大数据应用场景”之隔壁老王(连载四)
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Angular2开发踩坑系列-生产环境编译
  • Angular数据绑定机制
  • extjs4学习之配置
  • HTML5新特性总结
  • Laravel Telescope:优雅的应用调试工具
  • linux安装openssl、swoole等扩展的具体步骤
  • node 版本过低
  • QQ浏览器x5内核的兼容性问题
  • sublime配置文件
  • Vue 动态创建 component
  • Web标准制定过程
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 百度小程序遇到的问题
  • 大主子表关联的性能优化方法
  • 观察者模式实现非直接耦合
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 人脸识别最新开发经验demo
  • 如何用vue打造一个移动端音乐播放器
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 昨天1024程序员节,我故意写了个死循环~
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​用户画像从0到100的构建思路
  • #window11设置系统变量#
  • $.ajax,axios,fetch三种ajax请求的区别
  • (13):Silverlight 2 数据与通信之WebRequest
  • (20)docke容器
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C++20) consteval立即函数
  • (day6) 319. 灯泡开关
  • (ibm)Java 语言的 XPath API
  • (Java数据结构)ArrayList
  • (k8s)Kubernetes本地存储接入
  • (MATLAB)第五章-矩阵运算
  • (六)激光线扫描-三维重建
  • (三)Kafka离线安装 - ZooKeeper开机自启