pmap gdb 分析堆外内存泄露情况

本文介绍了通过pmap、/proc/PID/smaps、gdb和strings等工具深入分析Linux进程内存分配的方法,包括堆内存识别、内存区域定位、内存内容查看等步骤,帮助进行堆外内存的详细分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cat /sys/fs/cgroup/memory/memory.stat

一、查看内存分部  pmap -x 8 | sort -k3 -n -r | more       ----  8 是  PID

最大的肯定是堆内存。

其他的就需要看情况来分析了。

二、cat /proc/8/smaps  | grep 7fad64000000    -- 8 是 PID ,  地址的前4个0需要去掉。查到起止内存地址。

7fad64000000-7fad68000000 rw-p 00000000 00:00 0
Size: 65536 kB
Rss: 65536 kB
Pss: 65536 kB

三、gdb -p 8        --8 是 PID , 进入gdb命令内

dump memory /tmp/showMem.bin 0x07fad64000000 0x7fad68000000   

前面之前是0000,16进制就是一个0

四、strings /tmp/showMem.bin /tmp/showMem.log ,查看showMem,看具体的代码内容

修正版:

堆外分析

1. jcmd 9 VM.native_memory detail scale=MB > native_mem_1210.log

2. pmap -x 9 | sort -k3 -n -r  > pmap_1210.log

3. 选取2步骤中的比较大的地址,然后查到开始和结束地址,pmap的地址是开始地址
   cat /proc/9/smaps  | grep 7fc238000000
   
   7fc238000000-7fc23c000000 
 
4. 根据起始地址查看内存中的信息
  dd if=/proc/9/mem bs=$( getconf PAGESIZE ) iflag=skip_bytes,count_bytes skip=$(( 0x7fc238000000 )) count=$(( 0x7fc23c000000 - 0x7fc238000000 )) of="9_dump_7fc238000000.bin"

5.strings /tmp/showMem.bin /tmp/showMem.log
  

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值