首页 > 解决方案 > 如果目标应用程序使用 fopen() 函数,英特尔 Pin 会出现分段错误?

问题描述

我目前正在使用 Intel Pin 来跟踪某些应用程序的内存访问。但我发现如果目标应用程序使用 fopen() 函数,Pinatrace 工具会因分段错误而崩溃。这是我正在使用的测试代码:</p>

int main(){
    
    int i;

    ***************
    FILE *f = fopen("./test.txt", "r");
    while(!feof(f))
        fscanf(f, "%d", &i);
    fclose(f);
    printf("value of i is %d.\n", i);
    ***************

    printf("hope it works.\n");
    multiply();
  
  return 0;
}

int multiply()
{
    int i, sum;
    sum = 0;
    int *A = (int *)malloc(sizeof(int) * 10);
    int *B = (int *)malloc(sizeof(int) * 10);
    for(i = 0; i < 10; i++)
    {
        A[i] = i;
        B[i] = i;
    }
    for(i = 1; i < 10; i++)
        sum += A[i] * B[i];
    printf("value of sum is %d.\n", sum);
    
    return 0;
}

如果我评论 ***** 之间的行,一切都很好,这就是为什么我认为故障与 fopen() 函数有关。

我在这里被困了一个星期,希望能得到你的帮助。

标签: csegmentation-faultintel-pin

解决方案


推荐阅读