7

我正在尝试查看导致内存泄漏的进程,并转储导致它的堆以查看问题所在。

我在 gdb 中使用哪个命令来设置内存泄漏并检查堆?

我试过:

(gdb) check -leaks

checkpoint: can't find fork function in inferior.

(gdb) help info heap

Undefined info command: "heap".  Try "help info".

(gdb) help info leaks 

Undefined info command: "leaks".  Try "help info".
4

2 回答 2

12

正如人们指出的那样,Valgrind 是您的答案。通常,Valgrind 只会在程序执行结束时报告错误。您可以将 Valgrind 与 GDB ( vgdb) 链接,以便在程序运行期间在 GDB 下运行时转储 Valgrind 统计信息。

参考一个类似的问题:

转储 Valgrind 报告的丢失内存的内容

于 2013-02-08T15:18:01.667 回答
3

info leaks并且info heap是仅在 HP-UX 上的 gdb 中可用的命令(HP-UX gdb 是开源 GNU 调试器 gdb 的定制版本,在The HP Wildebeest Debugger (WDB)- http://www.hp.com/go/wdb上调用 )。在 Linux 上,您需要使用valgrind.

于 2013-02-08T15:20:42.373 回答