Agent Skills
返回列表
C++ 编译排错助手

C++ 编译排错助手

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_b4da0893/cpp-build-error-cn。

技能介绍

要解决的问题

C++ 项目的构建日志常常冗长且充满级联错误。当编译或链接失败时,最后一条汇总错误往往只是表象,真正的原因可能藏在前面的编译器诊断中。开发者容易陷入“从最后一行开始修”的误区,逐条处理模板展开、符号未定义等后续报错,却忽略了第一个真实失败点。此外,模板实例化栈、头文件宏展开、库链接顺序等问题相互交织,使得根因定位变得困难。

核心能力与工作方式

该技能通过“日志降噪→命令还原→阶段识别→契约比对→修复验证”的闭环流程,将复杂构建失败转化为可解释的失败链。具体能力包括:

  • 日志降噪:从并行构建日志中锁定首个返回非零退出码的失败命令,折叠后续级联错误,避免逐条误修。
  • 命令还原:展开响应文件、环境变量与生成器表达式,记录编译器路径、目标三元组、语言标准等真实参数,而非依赖构建入口的抽象描述。
  • 阶段识别:区分预处理、编译、模板实例化、代码生成、链接等阶段,避免在链接失败时误改头文件语法。
  • 契约比对:比对声明/定义、语言标准、ABI、架构、可见性等契约差异,将“找不到符号”分解为未生成、未导出、未链接等具体原因。
  • 修复验证:优先采用目标级依赖修复,避免全局包含路径或盲目追加库名,同时验证干净构建与增量构建的一致性。

适用边界与注意点

  • 不掩盖问题:禁止通过关闭警告、放宽类型检查或删除缓存来“修复”问题,必须定位到根因。
  • 环境敏感性:本机成功但CI失败时,需比对实际命令差异(如宏定义、库路径),而非仅比较版本标签。
  • ABI风险:涉及公共ABI变更时,需明确重编范围与兼容策略,不能将“能链接”等同于运行行为正确。
  • 可移植性:修复方案需考虑跨编译器、跨平台的可移植性,避免引入仅限特定工具链的hack。

使用场景

  • 大型 C++ 项目编译失败,上千行日志铺满屏幕,需要从级联错误中锁定首个根因并修复
  • 本机编译链接都通过,CI 流水线却构建失败,需要比对两边实际编译命令找出差异
  • 链接阶段报 undefined reference 或重复符号,需要确认符号来源、库顺序与导出配置
  • 模板实例化错误栈几十层深,需要解读实例化链找出模板参数不匹配的真实根因

适合人员

  • C++ 后端工程师:每次迭代合入后构建失败,需要在几千行日志中快速锁定首个根因并修复
  • 跨平台客户端开发者:静态库在 Linux 能链接但 Android 报符号未定义,需要定位 ABI 契约差异
  • 构建系统维护者:CI 镜像更新后全量构建失败,需要比对新旧环境的编译命令与生成参数差异
  • 嵌入式固件工程师:交叉编译时链接脚本段布局报错,需要排查目标三元组与库架构匹配问题