美文网首页
调试glibc

调试glibc

作者: lingguo610 | 来源:发表于2020-11-12 18:45 被阅读0次

最近想研究下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)

相关文章

  • 调试glibc

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

  • linux C开发环境

    开发环境 编辑器: vim 编译器: gcc 调试器: gdb 函数库: glibc 系统头文件:glibc_he...

  • Linux C++ main函数执行流程

    测试代码 编译 调试glibc 1.Entry point address 程序入口地址( 通过 read...

  • gdb配置glibc源码调试

    加载源文件 这个时候在/usr/src/glibc文件夹下面会有glibc-2.23.tar.xz源代码文件 进入...

  • 记录一次tcache调试

    说明 根据这篇文章的内容结合glibc-2.27对tcache的分配和释放做了一次调试实验。 测试代码 实验 1....

  • MongoDB 安装常见问题

    1、GLIBC版本过低 安装完后运行 mongod 报GLIBC_2.14 找不到,这是因为 GLIBC版本过低...

  • Linux下安装GLIBC_2.14

    1、查看系统glibc支持的版本 2、升级glibc支持的版本到GLIBC_2.14 官网地址 ➡️ http:/...

  • Linux下安装GLIBC_2.15

    1、查看系统glibc支持的版本 2、升级glibc支持的版本到GLIBC_2.15 官网地址 ➡️ http:/...

  • Linux文件系统

    Linux文件系统: glibc:glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底...

  • 阿里云服务器安装jdk前的准备工作

    终端输入sudo yum install glibc.i686命令,安装好glibc

网友评论

      本文标题:调试glibc

      本文链接:https://www.haomeiwen.com/subject/evwpbktx.html