• Linux下 gdb 调试打印进程内存信息


    以下面代码为例,打印进程的内存信息。代码如下:

    1. #include
    2. int main(void)
    3. {
    4. int i = 0;
    5. char data[100] = {0};
    6. for(i = 0; i < (sizeof(data)/sizeof(char)); i++)
    7. {
    8. data[i] = i;
    9. }
    10. return 0;
    11. }

    gdb 调试中,也可以打印进程的内存信息。命令如下:i proc mappings

    下面进行 gdb 调试,打印进程的内存信息。操作如下:

    首先,在程序某一行打断点。

    其次,输入 r 命令运行程序。

    最后,输入 i proc mappings 命令打印进程的内存信息。如下所示:

    (gdb) i proc mappings
    process 4261
    Mapped address spaces:

              Start Addr           End Addr       Size     Offset objfile
          0x555555554000     0x555555555000     0x1000        0x0 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
          0x555555555000     0x555555556000     0x1000     0x1000 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
          0x555555556000     0x555555557000     0x1000     0x2000 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
          0x555555557000     0x555555558000     0x1000     0x2000 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
          0x555555558000     0x555555559000     0x1000     0x3000 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
          0x7ffff7dc3000     0x7ffff7de5000    0x22000        0x0 /usr/lib/x86_64-linux-gnu/libc-2.31.so
          0x7ffff7de5000     0x7ffff7f5d000   0x178000    0x22000 /usr/lib/x86_64-linux-gnu/libc-2.31.so
          0x7ffff7f5d000     0x7ffff7fab000    0x4e000   0x19a000 /usr/lib/x86_64-linux-gnu/libc-2.31.so

    可以看到,输出了进程的内存映射信息。

    也可显示更详细的进程内存信息命令为:i files 命令 或者  i target 命令

    包括引用的动态链接库等等。。。

    如下所示:

  • 相关阅读:
    【Linux】什么是yum?--linux中的软件包管理器详解
    一个关于 TensorFlow 的悲剧故事
    RHCE红帽认证考试介绍(EX200:RHCSA;EX294:RHCE)
    编程笔记 Golang基础 018 常量与变量
    现代架构设计:构建可伸缩、高性能的系统
    CHS寻址
    23种设计模式-Java语言实现
    Go 学习笔记(88) — 字符串拼接方法和性能、字符串组成、UTF-8 编码方案、字符串之间转换
    JAVAWeb学习1:HTML超文本标记语言
    Java正则表达式解析复杂跨行日志
  • 原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/127651787