我如何在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