Linux GCC查漏補缺

1、gcc -Wl,--wrap,function

-Wl表示將參數傳遞給ld鏈接器,--wrap,function或者--wrap=function,此選項可以替換標準庫函數,實現不改變原有庫的情況下,使用新實現替換原有庫函數。

Example:

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

void* __real_malloc(size_t size); // 只聲明不定義__real_malloc
void* __wrap_malloc(size_t size) // 定義__wrap_malloc
{
    printf("__wrap_malloc called, size:%d\n", size); // log輸出
    return __real_malloc(size); // 通過__real_malloc調用真正的malloc
}

int main(void)
{
    void* mem=malloc(10);
}

輸出:

d:\VScode\.vscode>gcc wrap_test.c -o wrap_test -Wl,--wrap,malloc

d:\VScode\.vscode>wrap_test.exe
__wrap_malloc called, size:16
__wrap_malloc called, size:14
__wrap_malloc called, size:10

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章