如何让gdb在通过check执行的代码中的断点处停止?
#include<check>
int main(int argc, char **argv)
{
Suite *s = create_suite(); //create a test suite
SRunner *sr = srunner_create(s);
srunner_run_all(sr, CK_NORMAL);
}
在srunner_run_all(sr, CK_NORMAL)
的某处,我的代码被执行了。我可以在该代码中设置断点(它是一个共享库,由于挂起的断点没有问题)。加载共享库后,info b
会正确打印断点。尽管如此,gdb并没有停在断点处。
编辑:如果我在上面剪断的代码中设置了一个断点,那么gdb会停止。
答案 0 :(得分:0)
使用srunner_run_all(sr, CK_NOFORK);
就可以了。检查是否为测试分配了新的过程,以便可以处理和报告seg-faults等,而不会使测试程序崩溃。
更多详情可在documentation of check
中找到