如何在Linux上的C程序中使用malloc_stats

时间:2012-11-07 15:14:47

标签: linux memory c gdb

我试图通过在我的C程序中调用malloc_stats()来打印内存分配统计信息,该程序在Linux上运行。但是它不提供任何输出。根据malloc_stats()的联机帮助页,信息被发送到标准错误。那么如何将malloc_stats()信息重定向到我的程序的日志文件?

我也尝试在gdb中调用malloc_stats(),但是它没有给我正确的信息:

(gdb) call malloc_stats()
[Switching to Thread 182928084768 (LWP 11950)]
$2 = -1759135936
(gdb)

我的gdb有什么问题?

1 个答案:

答案 0 :(得分:2)

您无法更改malloc_stats输出的位置,您需要自己重定向stderr(例如,使用freopen),如果您想要其他地方。

如果你有一个最近足够的glibc(> = 2.10),你可以使用malloc_info(3),它将FILE*作为其参数之一(并输出XML)。将其与open_memstream(3)结合使用,就可以在内存缓冲区中获得它。

(我不知道你的gdb有什么问题,我的打印统计数据很好--GDB 7.3.1,glibc 7.15。)