单元测试C函数期待SIGSEGV

时间:2018-06-10 19:34:26

标签: c testing signals glibc sigsegv

我正在尝试单元测试C / glibc代码,我知道这些代码会导致未定义的行为,但是在给定适当的编译器选项的情况下,SEGV会失败。类似的东西:

void will_fail(char *bar) {
    bar[10000] = 'X';
}

void test_will_fail(void) {
    will_fail("foo");    // How can I handle this failing?
}

有没有办法捕获下一个SEGV,可能是GCC特定的或asm?如果它需要一个单独的地址空间(fork / exec),那么告诉生成的进程以SEGV结束的好方法是什么?

我正在使用c11 / x86-64 / glibc 2.26 / gcc 7.2.0和-fsanitize = address / CUnit(它不使用单独的地址空间进行单元测试)。唯一的硬性要求是保持在C领域。

非常感谢任何指导。谢谢!

0 个答案:

没有答案