调试glibc

最近想研究下linux虚拟内存模型,所以跟踪了下glibc的源码,下面分享下跟踪调试glibc的过程:

1、查看机器的glibc的版本


1.png

2、在网上下载源码

image.png

3、解压,编译

tar -xzvf glibc-2.17.tar.gz

export glibc_install="$(pwd)/glib-2.17/build/install"

cd glib-2.17

mkdir build

cd build

../configure --prefix "$glibc_install"

make -j `nproc`

make install -j `nproc`

编译的结果在 ./glibc-2.17/build/install/

image.png

(加一句:如果想查看libc库的宏定义,那么解压glibc-2.17.tar.gz之后,修改glibc-2.17/Makeconfig, 在最后加上 +cflags += -ggdb3,这样编译出来的lib有16M左右 ,如下图所示:)

image.png

4、编写 test_main.sh

#!/usr/bin/env bash
set -eux
gcc \
  -L "${glibc_install}/lib" \
  -I "${glibc_install}/include" \
  -Wl,--rpath="${glibc_install}/lib" \
  -Wl,--dynamic-linker="${glibc_install}/lib/ld-linux-x86-64.so.2" \
  -std=c11 \
  -gdwarf-2\
  -ggdb3 \
  -o main.out \
  -v \
  main.c \
;
ldd ./main.out
./main.out

5、编写main.c

#include <stdio.h>
#define TEST "test"
int main()
{
        int *p = malloc(sizeof(int));
        free(p);
}

6、测试

sh test_main.sh

gdb main.out

image.png

(如果想查看宏定义, 在gdb输入 info macro TEST 或者 macro expend TEST)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容