criterion默认是每个测试用例作为独立进程运行,从而提高测试效率,所以进行调试的时候,也会涉及到多进程调试

这里建议将其他的测试用例注释,只保留要测试的用例,可以减少运行的进程,方便调试

以下使用的平台是ubuntu22.04

首先我们有以下这些文件,test.c文件中包含的是测试程序,hash.c中包含的就是要测试的函数

1

然后编译,执行如下指令
gcc -g test.c hash.c -lcriterion 这会默认生成带调试信息的 a.out 文件

然后启动程序,执行指令 ./a.out --debug=gdb,这个选项表示我用的是gdb,当然也可以使用其他调试器,在执行这条命令之前,要确保你有安装gdbgdbserver

执行以下命令安装

sudo apt update
sudo apt install gdb gdbserver

2

然后我们启动另一个终端,用gdb进行连接,注意前面的端口号

先执行 gdb ./a.out,然后在连接端口 target remote localhost:1234,这里的端口号1234取决于上一步的结果Listening on port 1234

3

4

到这里之后我们要设置成跟踪子进程,因为是子进程在执行测试用例的内容,如果跟踪的是父进程,它会直接结束

6

然后我们就进入测试用例了,这里可以对测试用例中使用的函数打一个断点

5

然后输入c继续执行,他就会停在断点处了

6

 posted on 2025-03-19 23:21  Dylaris  阅读(57)  评论(2)    收藏  举报