ptmalloc - 起步

ptmalloc - 起步


要點

  • glibc下載和安裝
  • 調試ptmalloc

glibc下載和安裝

想要研究和學習一個東西,寫用例和看代碼是避免不了的,ptmalloc是屬於glibc的,下載安裝glibc不可避免,直接從http://mirrors.ustc.edu.cn/gnu/libc/找到了glibc-2.25的tar包。

cd /path/to/save/glibctar
wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.25.tar.gz
tar -xvf glibc-2.25.tar.gz

下載完了glibc就到了安裝的步驟,因爲只是用這個glibc庫做一個調試版本,所以要選擇一個新的目錄去存放編譯產物。

cd /path/to/install/glibccode
/glibc/tar/path/configure –prefix=/path/to/install/glibc

configure完成後,會生成已config.status的文件,如果想改編譯參數的話,就是直接改動這個文件

給個提示,glibc的宏很多,我爲了可以調試宏,我改動了編譯參數,在config.status中搜索CFLAGS,原本是

S[“CFLAGS”]=”-g -O2”
S[“CFLAGS”]=”-g -O2 -gdwarf-2 -g3” # 改動後可以展開和調試宏

接下來就是人見人愛的make了

make

make這一步,時間5-10分鐘。有位老鐵跟我說會碰到依賴問題,反正我是一make就過,安安穩穩。提一句我用的是fedora23,fedora大法好。

調試ptmalloc的環境算是部署好了。


調試ptmalloc

首先上一個用例吧

int main(void)
{
    char *mem = malloc(10);
    free(mem);
    return -1;
}

gcc 編譯如下

gcc -g -Wall -Wl,-rpath=/path/to/install/glibc \
-Wl,-dynamic-linker=/path/to/install/glibc/elf/ld-linux-x86-64.so.2 \
main.c -o main

gdb main
(gdb) b 3
(gdb) r
Starting program: main

Breakpoint 1, main() at main.c:3
3 char *mem = malloc(10);
(gdb) s
__GI___libc_malloc (bytes=10) at malloc.c:2879
….

看到gdb給出的信息,已經知道成功了。

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