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

自用Vscode 配置c++ debug环境

前言

使用vscode配置c++ debug环境的好处
1、可以借助vscode方便轻量的扩展和功能
2、避免了传统使用gdb 复杂按键以及不够直观的可视化
3、方便一次运行,断点处查看变量,降低找bug难度
4、某大公司项目采用类似配置,经过实践检验

配置c++运行环境

MSVC在Windows下编译c/c++

**gcc, g++**分别是GNU的c & c++编译器,在Linux下面用。

cmake的输入是CMakeLists.txt(描述编译过程),输出是makefile。build过程的输入是makefile,输出结果是可执行文件,build的过程会调用编译器和连接器来完成整个过程。

qmake用来build qt工程。

MINGW包含gcc和一系列工具,是windows下的gnu环境,让开发者在windows下可以写gnu的c/c++代码, 编译的结果是windows的可执行文件exe,PE格式的,在windows下运行。

可以自行搜索不同环境的配置方式

配置VSCODE

下载扩展
在这里插入图片描述

配置项目

首先我们创建使用Vscode打开项目工程区
然后在该工程下创建如下文件

也就是说当调试一个多文件c++项目时,将使用launch.json进行调试,其依赖于preLaunchTask定义的build任务。
这个任务通过cmake 和make进行构建。参考链接1给出了更加详细的介绍
而如果只是简单调试单文件可以略去task.json的配置,参考链接2给出了更加详细的介绍
launch.json


{"version": "0.2.0","configurations": [{"name": "g++ - Build and debug active file","type": "cppdbg","request": "launch","program": "${workspaceFolder}/build/xxxxxx","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build","miDebuggerPath": "/usr/bin/gdb"}]
}

tasks.json

{"version": "2.0.0","tasks": [{"label": "cmake","type": "shell","command": "cmake","args": ["-B","build"],"options": {"cwd": "${workspaceFolder}"}},{"label": "make","type": "shell","command": "cmake","args": ["--build","build"],"options": {"cwd": "${workspaceFolder}"}},{"label": "build","dependsOn": ["cmake","make"]}],
}

最后一键F5 即可进行断点调试了

参考资料

https://zhuanlan.zhihu.com/p/618043511
https://blog.csdn.net/qq_42417071/article/details/137438374

http://www.xdnf.cn/news/6355.html

相关文章:

  • 国产化Word处理控件Spire.Doc教程:通过C# 删除 Word 文档中的超链接
  • Window下Jmeter多机压测方法
  • linux使用普通用户,禁止root用户登录实操
  • 大模型智能体与 React Flow:构建智能化可视化交互系统的技术范式
  • Vue3+ElementPlus 开箱即用后台管理系统,支持白天黑夜主题切换,通用管理组件,
  • 海外短剧H5/App开源系统搭建指南:多语言+国际支付+极速部署
  • 【spring】spring源码系列之十:spring事务管理(下)
  • PostgreSQL malformed array literal异常
  • PostgreSQL pgrowlocks 扩展详解
  • 1267, “Illegal mix of collations (latin1_swedish_ci,IMPLICIT
  • 【重磅】配电网智能软开关和储能联合规划
  • 专项智能练习(定义判断)_DA_02
  • redis解决常见的秒杀问题
  • IP地址查询可以了解到哪些宿主信息
  • 地球阿米特黑客组织使用新型工具攻击军用无人机供应链
  • 介绍一下什么是 AI、 AGI、 ASI
  • 解决 Ubuntu 22.04 安装后启动卡死问题
  • 在文件检索方面doris和elasticsearch的区别
  • Kotlin 和 Java 混合开发时需要注意哪些问题
  • 信息系统运行管理员:临阵磨枪版
  • 01-数据结构概述和时间空间复杂度
  • 多模态大语言模型arxiv论文略读(七十六)
  • 插件双更新:LeetCode 刷题支持正式上线,JetBrains IDE 插件持续升级!
  • 前端图形渲染 html+css、canvas、svg和webgl绘制详解,各个应用场景及其区别
  • 加一个JVM参数,让系统可用率从95%提高到99.995%
  • java实现根据Velocity批量生成pdf并合成zip压缩包
  • 023-C语言预处理详解
  • 使用GoLang版MySQLDiff对比表结构
  • 大模型之Dify之踩坑集锦
  • undefined reference to `typeinfo for DeviceAllocator‘