c++ - 使用 gmock 时的 SegFault
问题描述
我正在使用 gmock 1.6 框架来编写单元测试代码。单元测试退出并在 Windows 上正常工作。
目标是在 linux 上运行它们。
在 Linux 开发环境上:
当我使用 eclipse CDT 时,测试工作正常。
但是当我使用命令行命令(cmake .. && make)时,执行时出现分段错误。
软件版本:
- GNU Make 4.1
- gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
- cmake 3.10.2
class mockClass : puclic baseClass
{
.....
MOCK_METHOD1(function, void(const std::shared_ptr<mmmm>));
.....
}
TEST(testSerie1, test1)
{
mockClass attrb;
......
EXPECT_CALL(attrb, function(_)).Times(AnyNumber()); // here code crahes
...
}
错误:
Thread 2 "m_thread" received signal SIGSEGV, Segmentation fault.
[Switching to Thread (LWP 20104)]
0x0123 in testing::internal::FunctionMocker<void (std::shared_ptr<mmmmmmm>)>::Invoke(std::shared_ptr<mmmmmmm>) ()
(gdb)
(gdb)
(gdb) backtrace
#0 ... in testing::internal::FunctionMocker<void (std::shared_ptr<mmmmmmm>)>::Invoke(std::shared_ptr<mmmmmmm>) ()
#1 ... in MockIClass::function(std::shared_ptr<mmmmmmm>) ()
.....
.....
.....
#6 0x00007ffff72bb66f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00007ffff758e6db in start_thread (arg=0x7ffff664e700) at pthread_create.c:463
#8 0x00007ffff6d1688f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)
有什么想法可以避免这种分段错误吗?
解决方案
当我将 googlemock 库版本升级到 1.8.1 后,问题就解决了。
推荐阅读
- user-interface - DoubleSlider 4 自动热键 gui
- javascript - POST http://localhost:8080/storeSqlData.php 404(未找到)
- python - SVM、MLP 等可以对多变量时间序列问题进行分类吗?
- java - maven 项目无法解析原型
- r - ggplot2 scale_x_discrete 导致我的 x 轴消失?
- database - 在全专业化中是否可以与更高级别的实体建立关系?
- reactjs - 我们可以使用类组件作为 React 中功能组件的子组件吗?
- google-cloud-platform - 在 Stackdriver 中设置新的正常运行时间检查时出错
- plsql - Oracle SQL Developer 和代码/行更改指示器
- javascript - 在外面关闭模态窗口并在里面有可点击的链接