gpt4 book ai didi

c++ - 转储内存以查找 C++ 应用程序中的内存泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:14 26 4
gpt4 key购买 nike

在 linux 中给定一个 active/live 进程,我如何转储内存以分析内存泄漏?

我通常使用 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.

然后,我分离并意识到转储文件是空的,也就是零字节。

我错过了什么吗?

最佳答案

(gdb) dump memory ./dump_outputfile.dump 0x02511000 0x2e2548000

你确定地址吗?

你要倾倒的区域大约是11Go!

这对 gdb 来说太多了吗?尝试使用较小的尺寸

当然要检查您是否有足够的可用磁盘空间来存放结果

关于c++ - 转储内存以查找 C++ 应用程序中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54195280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com