You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake集成GTest构建时报Error running test executable Result:24错误求助

问题根因定位

这个报错是gtest_discover_tests的内置逻辑触发的:CMake在完成Test二进制构建后,会自动运行一次该程序来枚举所有测试用例,此时你的Test程序运行异常退出,返回码为24,因此CMake抛出构建错误。
当你移除SRC库链接时,业务代码没有被编入测试程序,测试程序可以正常运行返回0,错误就会消失。

排查与解决方案

第一步:复现程序运行错误

直接手动执行报错路径下的测试二进制文件:

/home/fengyuan/Desktop/a1835007/2021/s2/oop/practical-08-11/Tests/cmake-build-debug/Test

观察运行输出的错误信息,比如段错误、断言失败等提示,即可定位到业务代码的异常位置。

第二步:常见问题修复

90%以上的该类错误都是业务代码运行时异常导致,常见问题点:

  • RoomFactory单例的初始化逻辑存在缺陷,比如懒汉实现线程不安全、初始化依赖的资源不存在直接终止程序
  • occupyAFreeRoom 方法返回空指针,后续直接访问room->roomStatus触发空指针解引用崩溃
  • 全局对象的构造函数中存在崩溃逻辑,程序在进入gtest的main函数前就异常退出

第三步:构建阶段临时绕过方案

如果不需要在构建阶段自动发现测试用例,可以修改CMakeLists.txt中的测试配置:
删除gtest_discover_tests(Test) 行,替换为:

gtest_add_tests(TARGET Test SOURCES Tests.cpp)

该命令是静态解析测试代码来识别用例,不需要运行测试程序,即可避免构建阶段的报错,后续你可以单独运行测试程序调试业务问题。

第四步:编译一致性检查

确认SRC库和Test目标的编译配置一致:

  • 两者的C++标准、编译选项、宏定义没有冲突
  • 没有出现结构体对齐规则不一致、符号隐式声明等链接问题

内容的提问来源于stack exchange,提问作者Freddyy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:54:05