如何将GDB与GCOV一起使用?
我在这里看了这篇文章:如何将GDB与GCOV一起使用?,gdb,gcov,Gdb,Gcov,我在这里看了这篇文章: #包括 #包括 int main(argc、argv) int-argc; 字符**argv; { int x,y; 内部阵列化; 整数**数组; 如果(argc!=2){ printf(“用法:%s输入arraysize值\n”,argv[0]); 出口(-1); }否则{ arraysize=atoi(argv[1]); if(arraysize)你能显示一些示例代码吗?据我所知,gcc的测试覆盖率是通过在基本块的开头递增一个计数器来实现的。如果你使用调试器跳转到基本
#包括
#包括
int main(argc、argv)
int-argc;
字符**argv;
{
int x,y;
内部阵列化;
整数**数组;
如果(argc!=2){
printf(“用法:%s输入arraysize值\n”,argv[0]);
出口(-1);
}否则{
arraysize=atoi(argv[1]);
if(arraysize)你能显示一些示例代码吗?据我所知,gcc的测试覆盖率是通过在基本块的开头递增一个计数器来实现的。如果你使用调试器跳转到基本块的中间,递增指令可能会被跳过。我从web链接添加了代码。如果我尝试“jump 34”从gdb中,代码退出并打印出我所期望的内容,但GCOV没有报告这一行。可能是跳过了一个基本块的开头,但是原始网页中的人是如何让他们的示例工作的?不知何故,gdb、gcc和/或GCOV并不是每次都做相同的事情,但我不知道如何确定我可以复制它,我会研究它。至于为什么不同版本的代码覆盖率软件表现不同:你链接的文章已经超过11年了。从那时起,Gcc和gcov可能已经改变了它们的实现。
#include <stdlib.h>
#include <stdio.h>
int main(argc, argv)
int argc;
char **argv;
{
int x, y;
int arraysize;
int **array;
if (argc != 2) {
printf(“Usage: %s Enter arraysize value \n”,argv[0]);
exit(-1);
} else {
arraysize = atoi (argv[1]);
if (arraysize <= 0) {
printf(“Array size must be larger than 0 \n”);
exit(-1);
}
}
array = (int **) malloc (arraysize*sizeof (int *));
printf(“Creating an %d by %d array \n”, arraysize, arraysize);
if (array == NULL) {
printf(“Malloc failed for array size %d \n”, arraysize);
exit(-1);
}
for (x=0; x < arraysize; x++) {
array[x] = (int *) malloc (arraysize*sizeof (int));
if (array[x] == NULL) {
34: printf(“Failed malloc for array size %d \n”, arraysize);
exit(-1);
}
}
exit(0);
}