VSCode C++调试配置全解析

VSCode C/C++调试配置文件 launch.json 全字段解析

launch.json 是 Visual Studio Code 中用于配置调试任务的核心文件,对于 C/C++ 开发者尤为重要。以下是对其字段的深度解析。

基础结构

launch.json 必须包含 versionconfigurations 字段。version 指定调试配置的版本,通常为 "0.2.0"configurations 是一个数组,包含多个调试配置。

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C++ Launch",
      "type": "cppdbg",
      "request": "launch"
    }
  ]
}

核心字段详解

name
调试配置的名称,显示在 VSCode 调试启动下拉菜单中。命名需清晰,如 "Debug C++ Program"

type
指定调试器类型。C/C++ 项目通常为 "cppdbg"(Microsoft C++ 调试器)或 "lldb"(LLVM 调试器)。

request
定义调试启动方式:

  • "launch":启动新进程并附加调试器。
  • "attach":附加到已运行的进程。

program
可执行文件的路径,通常为编译后的二进制文件(如 ${workspaceFolder}/bin/main)。可使用变量如 ${workspaceFolder}

args
传递给程序的命令行参数数组。例如:

"args": ["--input", "data.txt"]

cwd
设置调试的工作目录,默认为 ${workspaceFolder}。若程序需读取相对路径文件,需正确配置此字段。

调试器控制字段

miDebuggerPath
指定 GDB 或 LLDB 调试器的完整路径。例如:

"miDebuggerPath": "/usr/bin/gdb"

stopAtEntry
布尔值,控制是否在程序入口点(如 main 函数)自动暂停。默认为 false

externalConsole
布尔值,决定是否使用外部终端(如系统终端)而非 VSCode 集成终端。默认为 false

环境与预处理

environment
设置环境变量数组。例如:

"environment": [
  {"name": "PATH", "value": "/usr/local/bin:${env:PATH}"}
]

preLaunchTask
在调试前执行的任务名称(需在 tasks.json 中定义)。常用于编译构建:

"preLaunchTask": "build-cpp"

高级调试配置

sourceFileMap
映射调试器与本地源代码路径,适用于远程调试或路径不一致的场景:

"sourceFileMap": {
  "/remote/path": "${workspaceFolder}/local/path"
}

customLaunchSetupCommands
自定义调试器启动命令,适用于特殊调试需求:

"customLaunchSetupCommands": [
  {"text": "set breakpoint pending on"}
]

示例配置

以下是一个完整的 launch.json 示例:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug C++ Program",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/build/main",
      "args": ["--verbose"],
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "miDebuggerPath": "/usr/bin/gdb",
      "preLaunchTask": "build-cpp"
    }
  ]
}

通过合理配置这些字段,可以实现断点调试、变量监视、调用栈分析等高级功能,显著提升开发效率。

BbS.okapop072.sbs/PoSt/1122_549204.HtM
BbS.okapop073.sbs/PoSt/1122_678359.HtM
BbS.okapop074.sbs/PoSt/1122_013610.HtM
BbS.okapop075.sbs/PoSt/1122_654843.HtM
BbS.okapop076.sbs/PoSt/1122_474002.HtM
BbS.okapop077.sbs/PoSt/1122_320477.HtM
BbS.okapop078.sbs/PoSt/1122_887857.HtM
BbS.okapop079.sbs/PoSt/1122_407912.HtM
BbS.okapop080.sbs/PoSt/1122_011830.HtM
BbS.okapop081.sbs/PoSt/1122_430981.HtM
BbS.okapop072.sbs/PoSt/1122_682816.HtM
BbS.okapop073.sbs/PoSt/1122_096938.HtM
BbS.okapop074.sbs/PoSt/1122_253177.HtM
BbS.okapop075.sbs/PoSt/1122_010926.HtM
BbS.okapop076.sbs/PoSt/1122_829971.HtM
BbS.okapop077.sbs/PoSt/1122_003266.HtM
BbS.okapop078.sbs/PoSt/1122_650444.HtM
BbS.okapop079.sbs/PoSt/1122_825723.HtM
BbS.okapop080.sbs/PoSt/1122_356833.HtM
BbS.okapop081.sbs/PoSt/1122_431884.HtM
BbS.okapop072.sbs/PoSt/1122_288765.HtM
BbS.okapop073.sbs/PoSt/1122_225044.HtM
BbS.okapop074.sbs/PoSt/1122_188404.HtM
BbS.okapop075.sbs/PoSt/1122_689401.HtM
BbS.okapop076.sbs/PoSt/1122_695677.HtM
BbS.okapop077.sbs/PoSt/1122_043162.HtM
BbS.okapop078.sbs/PoSt/1122_820635.HtM
BbS.okapop079.sbs/PoSt/1122_949838.HtM
BbS.okapop080.sbs/PoSt/1122_240102.HtM
BbS.okapop081.sbs/PoSt/1122_735496.HtM
BbS.okapop072.sbs/PoSt/1122_314902.HtM
BbS.okapop073.sbs/PoSt/1122_758898.HtM
BbS.okapop074.sbs/PoSt/1122_615505.HtM
BbS.okapop075.sbs/PoSt/1122_961544.HtM
BbS.okapop076.sbs/PoSt/1122_267107.HtM
BbS.okapop077.sbs/PoSt/1122_170721.HtM
BbS.okapop078.sbs/PoSt/1122_262232.HtM
BbS.okapop079.sbs/PoSt/1122_005717.HtM
BbS.okapop080.sbs/PoSt/1122_566484.HtM
BbS.okapop081.sbs/PoSt/1122_179139.HtM
BbS.okapop072.sbs/PoSt/1122_267259.HtM
BbS.okapop073.sbs/PoSt/1122_887777.HtM
BbS.okapop074.sbs/PoSt/1122_087468.HtM
BbS.okapop075.sbs/PoSt/1122_656862.HtM
BbS.okapop076.sbs/PoSt/1122_784583.HtM
BbS.okapop077.sbs/PoSt/1122_105479.HtM
BbS.okapop078.sbs/PoSt/1122_595792.HtM
BbS.okapop079.sbs/PoSt/1122_245116.HtM
BbS.okapop080.sbs/PoSt/1122_376957.HtM
BbS.okapop081.sbs/PoSt/1122_180910.HtM
BbS.okapop072.sbs/PoSt/1122_384207.HtM
BbS.okapop073.sbs/PoSt/1122_741882.HtM
BbS.okapop074.sbs/PoSt/1122_471505.HtM
BbS.okapop075.sbs/PoSt/1122_733993.HtM
BbS.okapop076.sbs/PoSt/1122_380183.HtM
BbS.okapop077.sbs/PoSt/1122_413972.HtM
BbS.okapop078.sbs/PoSt/1122_982543.HtM
BbS.okapop079.sbs/PoSt/1122_585717.HtM
BbS.okapop080.sbs/PoSt/1122_643329.HtM
BbS.okapop081.sbs/PoSt/1122_235627.HtM
BbS.okapop072.sbs/PoSt/1122_935228.HtM
BbS.okapop073.sbs/PoSt/1122_160316.HtM
BbS.okapop074.sbs/PoSt/1122_789499.HtM
BbS.okapop075.sbs/PoSt/1122_627916.HtM
BbS.okapop076.sbs/PoSt/1122_402934.HtM
BbS.okapop077.sbs/PoSt/1122_268168.HtM
BbS.okapop078.sbs/PoSt/1122_888909.HtM
BbS.okapop079.sbs/PoSt/1122_476530.HtM
BbS.okapop080.sbs/PoSt/1122_272135.HtM
BbS.okapop081.sbs/PoSt/1122_446121.HtM
BbS.okapop072.sbs/PoSt/1122_114698.HtM
BbS.okapop073.sbs/PoSt/1122_530820.HtM
BbS.okapop074.sbs/PoSt/1122_917315.HtM
BbS.okapop075.sbs/PoSt/1122_364661.HtM
BbS.okapop076.sbs/PoSt/1122_789742.HtM
BbS.okapop077.sbs/PoSt/1122_223461.HtM
BbS.okapop078.sbs/PoSt/1122_856728.HtM
BbS.okapop079.sbs/PoSt/1122_547906.HtM
BbS.okapop080.sbs/PoSt/1122_004652.HtM
BbS.okapop081.sbs/PoSt/1122_923951.HtM

#牛客AI配图神器#

全部评论

相关推荐

11-18 13:00
已编辑
江西理工大学 测试开发
点赞 评论 收藏
分享
面试官是真的很帅,真的很好。鼠鼠太久没有复习巩固自己的八股了,然后项目也没及时巩固。面试官友好面了50分钟,体验非常好,最后面试官也给鼠鼠很好的建议。只怪鼠鼠学而不精了也感谢哈啰给学院本的面试机会!回去老实啃基础了后端开发面试核心问题汇总(按模块分类)(一)个人经历与项目类(二)Java 核心基础类Object 的 wait () 方法与 Thread 的 sleep () 方法的区别?常用集合框架(ArrayList、LinkedList)的底层原理、优缺点、时间复杂度对比?读多写少场景下,应选择 ArrayList 还是 LinkedList?HashMap 的底层原理(JDK1.8 后)?何时从链表转为红黑树?HashMap 为何线程不安全?ConcurrentHashMap 为何线程安全?线程的核心参数有哪些?volatile 关键字的作用?synchronized 关键字的作用?多线程并发访问时,如何保证数据安全?JVM 内存模型如何划分?(新生代、老年代、永久代 / 元空间)垃圾回收算法有哪些?(标记 - 清除、复制、标记 - 整理、分代回收)如何判定一个对象是否存活?(引用计数法、可达性分析)(三)框架与中间件类Spring 与 Spring Boot 的区别?项目中是否用到 Spring 的特性(如 AOP)?具体场景是什么?Redis 支持哪些数据类型?缓存穿透、缓存击穿、缓存雪崩的定义及解决方案?RabbitMQ 的消费方式有哪些?(如推模式、拉模式、订阅模式等)(四)场景设计类用户头像接口不稳定(有时加载失败),如何保证前端用户体验?(五)求职与公司相关类对哈啰公司业务方向的了解?部门主要业务方向是什么?公司人员架构 / 规模?面试后续流程是什么?
查看21道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务