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

VSCode 多工程联合调试

在 Visual Studio Code (VSCode) 中联合调试两个 C++ 工程,其中一个是进程,另一个是依赖库,你可以通过设置调试配置文件和使用 launch.json 来实现。

假设你的工程结构如下:

  • ProjectA: 包含主进程(可执行文件)。
  • ProjectB: 包含库文件,ProjectA 依赖它。

步骤 1:配置 tasks.json

首先,确保你能够编译这两个项目。你需要在 tasks.json 文件中设置编译任务。

例如,对于 ProjectAProjectB,你可以有类似的配置:

{"version": "2.0.0","tasks": [{"label": "build ProjectA","type": "shell","command": "g++","args": ["-g", "projectA_main.cpp", "-o", "projectA_executable", "-L./projectB", "-lprojectB"],"group": {"kind": "build","isDefault": true}},{"label": "build ProjectB","type": "shell","command": "g++","args": ["-g", "projectB_lib.cpp", "-o", "libprojectB.a", "-c"],"group": {"kind": "build","isDefault": true}}]
}

步骤 2:配置 launch.json

接下来,配置 launch.json 来设置联合调试。你需要为 ProjectA(进程)创建调试配置,并确保它在启动时能够加载 ProjectB 的库。

{"version": "0.2.0","configurations": [{"name": "Debug ProjectA with ProjectB","type": "cppdbg","request": "launch","program": "${workspaceFolder}/projectA_executable", // 指向 ProjectA 的可执行文件"args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"miDebuggerPath": "/usr/bin/gdb","preLaunchTask": "build ProjectA",  // 编译 ProjectA"postDebugTask": "","logging": {"moduleLoad": false,"programOutput": true,"engineLogging": false,"exceptions": true},"windows": {"MIMode": "gdb","miDebuggerPath": "C:/path/to/gdb.exe"}}]
}

步骤 3:设置调试依赖库

如果 ProjectA 依赖于 ProjectB 库,你可以通过 launch.json 设置 LD_LIBRARY_PATH 或其他环境变量来确保调试时可以找到 ProjectB 的库。

例如,在 launch.json 中设置 environment 字段:

"environment": [{"name": "LD_LIBRARY_PATH","value": "${workspaceFolder}/projectB"}
]

步骤 4:启动联合调试

  1. 在 VSCode 中选择调试配置 “Debug ProjectA with ProjectB”。
  2. 使用 F5 或点击调试按钮开始调试。VSCode 会自动构建并启动 ProjectA,并且会连接到 ProjectB 的库,开始联合调试。

这样,你就可以同时调试 ProjectA 的进程和 ProjectB 的库了。


http://www.mrgr.cn/news/68374.html

相关文章:

  • MyBatis项目的创建和增删查改操作
  • 域名邮箱推荐:安全与稳定的邮件域名邮箱!
  • mysql特性
  • 电路原理:电阻桥。
  • 信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
  • elementui中的新增弹窗在新增数据成功后再新增 发现数据无法清除解决方法
  • Java 8 Optional 详解
  • 简化招标流程:电子招标软件的关键作用
  • vue搭建项目之后的步骤操作
  • 科研——统计 Markdown 字符数量的插件
  • 贝塞尔曲线的超集即对应的数学模型
  • API返回值:代码界的“快递包裹”说明
  • 旅游社交小程序ssm+论文源码调试讲解
  • 深入理解封装与接口:Java程序设计的核心思想与最佳实践
  • C#中日期和时间的处理
  • java开发程序员职业发展的一些思考
  • 【华为机试题】 [Python] 光伏场地建设规划
  • 【算法设计与分析】期末复习
  • ElasticSearch 添加IK分词器
  • 大型语言模型(LLMs)关键技术指南
  • C加加中的结构化绑定(解包,折叠展开)
  • 国标GB28181公网直播EasyGBS国标GB28181设备管理软件支持的监控设备类型
  • 【C++】哈希表封装 unordered_map 和 unordered_set 的实现过程
  • 如何通过执行计划分析优化SQL查询性能——以`TrainOrderChange`表查询为例
  • UE5.4 PCG 复制关卡实例
  • go中的类型断言详解