M_r2333 2022-12-31 00:15 采纳率: 0%
浏览 81
已结题

调用mockcpp打桩的函数报错Program received signal SIGSEGV, Segmentation fault.

写C++UT时,调用一个打桩了的函数就会报错

#include <stdint.h>
#include "gtest/gtest.h"
#include "mockcpp/mockcpp.hpp"

在尝试调用的时候就会报错

int add(int input)
{
    return input;
}

TEST(commFunTest,NoMock)
{
    int a = 1;
    ASSERT_EQ(1, add(a));
}

TEST(commFunTest,Mock)
{
    MOCKER(add).stubs().will(returnValue((int)3));
    int a = 1;
    ASSERT_EQ(2, add(a));
}

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()

  • 写回答

6条回答 默认 最新

  • heart_6662 2022-12-31 01:03
    关注
    获得1.95元问题酬金

    望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
    我猜测这个错误的原因可能是由于在调用打桩了的函数时没有正确调用 mockcpp 库。


    在使用 mockcpp 库时,需要确保 mockcpp 库已经正确安装,并在编译时正确链接 mockcpp 库。这可以通过在编译命令中加入 mockcpp 的库文件路径和库文件名称来实现。

    例如,你可以使用以下命令来编译和链接你的程序:

    g++ -o test main.cpp -lmockcpp
    
    

    另外,你还可以尝试检查 mockcpp 库的安装是否正确,以及你的程序中是否有拼写或引用 mockcpp 库的错误。


    此外,你也可以尝试在程序中添加调试信息,以帮助你找出问题的具体原因。例如,你可以使用 cout 语句来输出变量的值或函数的返回结果,以帮助你更好地理解程序的执行流程和调用关系。

    评论

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 创建了问题 12月31日