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

VSCode C++ 调试方法

VSCode 调试 C++ 主要就是 .vscode 中的 launch.json 和 tasks.json 的配置。

launch.json 可以通过 vscode 界面 ——》左侧调试功能按钮——》创建 launch.json ——》C++(GDB/LLDB)生成。

其中 launch.json 默认配置如下,主要配置项说明:

  • name:启动项的名字
  • program:指向最终生成的可执行文件的路径
  • args:执行时的输入参数
  • stopAtEntry:自动在 main 函数时停止
{"version": "0.2.0","configurations": [{"name": "C/C++: g++ build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "/usr/bin/gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++ build active file"}]
}

tasks.json 文件可以通过 vscode 菜单 ——》终端——》配置任务 生成。

其中 tasks.json 默认配置如下,主要配置项说明:

  • command:给出具体编译命令,可以是 /usr/bin/g++,也可以是基于 CMakeLists.txt 直接输入 cmake 命令
  • args:编译命令输入参数
  • group.isDefault:是否为默认编译方式,True 表示默认使用此编译选项
{"version": "2.0.0","tasks": [{"type": "shell","label": "C/C++: g++ build active file","command": "/usr/bin/g++","args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],"options": {"cwd": "/usr/bin"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "Task generated by Debugger."}]
}

CMakeLists.txt 方式

如果使用 CMakeLists.txt,需要在 CMakeLists.txt 中添加如下行,从而以 Debug 方式(一共有以下方式:Debug Release RelWithDebInfo 和 MinSizeRel)编译。

SET(CMAKE_BUILD_TYPE "Debug") 
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

tasks.json 配置中对应 command 修改如下

{"version": "2.0.0","tasks": [{..."command": "cmake . -B build -DCMAKE_BUILD_TYPE=Debug;cmake --build build --target main --config Debug -j","args": [],...]
}

http://www.lryc.cn/news/100382.html

相关文章:

  • Java设计模式-命令模式
  • Linux编译宏BUILD_BUG_ON_ZERO
  • 从Arweave开始:4EVERLAND存储签入挑战开始
  • 数据结构—链表
  • windows 10/11 修改右键新建菜单
  • 6.修饰符
  • 【leetcode难题】2569. 更新数组后处理求和查询【线段树实现01翻转和区间求和模版】
  • 练习时长两年半的入侵检测
  • 【弹力设计篇】聊聊隔离设计
  • MFC 透明窗体
  • C++笔记之vector的resize()和clear()用法
  • Vue2基础九、路由
  • 移动零——力扣283
  • Transformer+MIA Future Work
  • 深度学习入门(二):神经网络整体架构
  • rust 配置
  • 文心一言 VS 讯飞星火 VS chatgpt (67)-- 算法导论6.5 6题
  • 6、Kubernetes核心技术 - Pod
  • VlanIf虚拟接口 通信技术(二十三课)
  • 图神经网络(GNN)入门学习笔记(直观且简单)
  • 【Java开发】 Mybatis-Flex 01:快速入门
  • 企业级业务架构学习笔记<二>
  • Minio在windows环境配置https访问
  • 安装JDK环境(Windows+Linux双教程)
  • SVG图标,SVG symbols,SVG use标签
  • 常用css 笔记
  • git的ssh方式对接码云
  • Golang之路---02 基础语法——变量
  • Webpack5 DefinePlugin的作用
  • Verilog语法学习——LV7_求两个数的差值