ptmalloc

来源:互联网 发布:成都租房 知乎 编辑:程序博客网 时间:2024/05/22 20:10

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给出的信息,已经知道成功了。

原创粉丝点击