如何使用mcheck?

时间:2015-02-15 18:17:46

标签: c gnu

我试图了解堆一致性检查在GNU C库中的工作原理。 我提到了http://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.html#Heap-Consistency-Checking

这是我编写的示例程序。我按照手册中的建议,如果我在gdb中运行并调用mcheck(0),我的自定义abortfn将被调用。但它没有被召唤。 我在这里错过了什么? 谢谢:))

#include<stdio.h>                                                               
#include<stdlib.h>                                                              
#include<mcheck.h>                                                              

void *abortfn(enum mcheck_status status)                                        
{                                                                               
    switch(status) {                                                            
        case MCHECK_DISABLED:                                                   
            printf("MEMCHECK DISABLED\n");                                      
            break;                                                              
        default:                                                                
            printf("MEMCHECK ENABLED\n");                                       
    }                                                                           
}                                                                               

int main()                                                                      
{                                                                               
    printf("This is mcheck testing code\n");                                    
    int *a = (int *) malloc(sizeof(int));                                       
    *a = 10;                                                                    
    printf("A: %d\n", *a);                                                      
    free(a); 
    return 0;
}

0 个答案:

没有答案