criterion默认是每个测试用例作为独立进程运行,从而提高测试效率,所以进行调试的时候,也会涉及到多进程调试
这里建议将其他的测试用例注释,只保留要测试的用例,可以减少运行的进程,方便调试
以下使用的平台是ubuntu22.04
首先我们有以下这些文件,test.c文件中包含的是测试程序,hash.c中包含的就是要测试的函数

然后编译,执行如下指令
gcc -g test.c hash.c -lcriterion 这会默认生成带调试信息的 a.out 文件
然后启动程序,执行指令 ./a.out --debug=gdb,这个选项表示我用的是gdb,当然也可以使用其他调试器,在执行这条命令之前,要确保你有安装gdb和gdbserver
执行以下命令安装
sudo apt update
sudo apt install gdb gdbserver

然后我们启动另一个终端,用gdb进行连接,注意前面的端口号
先执行 gdb ./a.out,然后在连接端口 target remote localhost:1234,这里的端口号1234取决于上一步的结果Listening on port 1234


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

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

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

posted on
浙公网安备 33010602011771号