我如何在GCOV上使用GDB?
我在这里看了这篇文章:http://www.linux-mag.com/id/1409/
#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);
}
文章很简单。 它建议使用GDB通过“跳转”到通常无法访问的行来获得覆盖范围。 但是,它不像描述的那样工作。 我发现,如果我在GDB中使用“跳转”命令,gcov不会将该行识别为执行。 我必须在行之前实际上中断,并且使用数组变量来强制代码识别malloc失败。 一般来说,这可能会也可能不那么容易。 跳转似乎是一种更简单的方式来获得代码,但它不起作用。
所以这里真的有两个问题。
gcov为什么不识别gdb跳转?
为什么gcov / gdb的一个版本识别跳转而另一个不跳转? 我怎么知道这两个程序是否兼容?
谢谢。
链接地址: http://www.djcxy.com/p/51009.html