鉴于linux中有一个活动/活动进程,我该如何转储内存以分析内存泄漏?
我通常使用valgrind,但是不幸的是,valgrind使得应用程序运行非常缓慢,以至于无法完成与其他服务器上其他进程的初始化。
此post中的尝试答案之一是建议与/proc/[PID]/smaps
进行比较以找到正在增长的内存区域。
我尝试过,差异包含:
+02511000-2eb548000 rw-p 00000000 00:00 0 [heap]
+Size: 12206300 kB
+Rss: 12105644 kB
+Pss: 12105644 kB
然后我尝试使用gdb附加到实时进程并执行:
(gdb) dump memory ./dump_outputfile.dump 0x02511000 0x2e2548000
./dump_outputfile.dump: Success.
然后,我分离并意识到转储文件是空的,也就是零字节。
我想念什么吗?
答案 0 :(得分:2)
(gdb)转储内存./dump_outputfile.dump 0x02511000 0x2e2548000
您确定地址吗?
您要转储的区域约为11Go!
对于gdb来说太多了吗?尝试使用较小的尺寸
当然请检查您是否有足够的可用磁盘空间来存储结果