如何将GDB与GCOV一起使用?

时间:2014-11-06 18:33:50

标签: gdb gcov

我在这里查看了这篇文章: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通过&#34;跳转到通常无法到达的线路来覆盖。但是,它并没有像所描述的那样起作用。我发现如果我使用&#34; jump&#34;在GDB中,gcov不会将该行识别为已执行。我之前必须先断开这一行,然后使用数组变量强制代码识别malloc失败。一般来说,这可能也可能不那么容易。跳转似乎是一种更容易获取代码的方式,但它无法正常工作。

所以这里确实有两个问题。

为什么gcov没有识别gdb跳转?

为什么一个版本的gcov / gdb识别跳转而另一个版本不识别?如何判断2个程序是否兼容?

感谢。

0 个答案:

没有答案